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