简体   繁体   中英

UILabel Shadow Has Unwanted Cut Off

I have a UILabel that I add a shadow to. The UILabel shows up and so does the shadow, but the leftmost shadow is cut off so that it is in line with the edge of the text. I moved the position of the label to see if it was being covered by a view, but everything stayed the same. I also took out the sizeToFit, and it stayed the same. Here is the initialization of the label:

    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);

I had this problem with a custom font and solved it by subclassing UILabel and adding the shadowOffset to intrinsicContentSize with this override:

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

我想你需要补充一下

scoreLabel.clipsToBounds = NO;

This is the solution you want:

let style = NSMutableParagraphStyle()
style.firstLineHeadIndent = someInset // can be shadowBlur and/or shadowRadius
style.headIndent = someInset
style.tailIndent = -someInset // must be negative since its at the end (tail)

let attrString = NSMutableAttributedString(string: "Some Text")
attrString.addAttribute(.paragraphStyle, value: style, range: .init(location: 0, attrString.length)
let label = UILabel()
label.numberOfLines = 0 // not necessary
label.attributedText = attrString

我添加了这个,切断消失了:

scoreLabel.textAlignment = NSTextAlignmentCenter;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM