UILabel Shadow имеет нежелательное отсечение

У меня есть UILabel, к которому я добавляю тень. UILabel отображается, как и тень, но крайняя левая тень обрезается, чтобы соответствовать краю текста. Я изменил положение метки, чтобы увидеть, закрыта ли она видом, но все осталось по-прежнему. Я также убрал sizeToFit, и он остался прежним. Вот инициализация метки:

    UILabel *scoreLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height)];
    scoreLabel.text = text;
    [scoreLabel setFont:[UIFont fontWithName:fontName size:fontSize]];
    scoreLabel.textColor = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];

    scoreLabel.shadowColor = [UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:1.0f];
    scoreLabel.shadowOffset = CGSizeMake(-10.0, 2.0);
    scoreLabel.clipsToBounds = NO;

    [scoreLabel sizeToFit];

    scoreLabel.center = CGPointMake(x, y);


person mntruell    schedule 27.11.2014    source источник
comment
Просто ради интереса, что это за шрифт?   -  person SwiftsNamesake    schedule 26.02.2018


Ответы (3)


У меня была эта проблема с пользовательским шрифтом, и я решил ее, создав подкласс UILabel и добавив shadowOffset к intrinsicContentSize с этим переопределением:

override var intrinsicContentSize: CGSize  {
    get {
        let s = super.intrinsicContentSize
        return CGSize(width: s.width + abs(shadowOffset.width), height: s.height + abs(shadowOffset.height))
    }
}
person Dorian Roy    schedule 15.12.2016

Я думаю, вам нужно добавить

scoreLabel.clipsToBounds = NO;
person sha    schedule 27.11.2014
comment
все еще имеет такое же поведение - person mntruell; 28.11.2014
comment
можешь выложить скриншот? - person sha; 28.11.2014
comment
Это похоже на то, что что-то еще режет его выше. Может захотеть запустить инспектор просмотра и посмотреть, что именно - person sha; 28.11.2014

Я добавил это, и обрезание исчезло:

scoreLabel.textAlignment = NSTextAlignmentCenter;
person mntruell    schedule 27.11.2014
comment
Это не совсем правильное решение :) но если оно сработало - хорошо - person sha; 28.11.2014
comment
Я сделал View Inspector, и метка была сверху @sha, но я заметил, что текст был на левом краю метки, поэтому я добавил это, и теперь он расположен по центру и не обрезается. - person mntruell; 28.11.2014
comment
Вы также должны быть в состоянии достичь того, чего пытались достичь, используя выравнивание по левому краю. - person sha; 28.11.2014
comment
Тень моих меток также обрезана, но изменение выравнивания у меня не работает... Думаю, мне нужно сделать границы теневыми, но пока не могу понять. Установка clipsToBounds в false тоже не помогает. - person endavid; 07.02.2016