NSTextAlignmentJustified to UILable textAligment on iOS6 will crash

后端 未结 2 1865
借酒劲吻你
借酒劲吻你 2021-01-04 21:00

I am use Xcode4.5 and iOS6 now, the iOS6 have change the UILable\'s textAlignment,

label.textAlignment = NSTextAlignmentJustified;

The cod

相关标签:
2条回答
  • 2021-01-04 21:15

    Edit 1:

    Using NSAttributedString we can justify text.

    NSMutableParagraphStyle *paragraphStyles = [[NSMutableParagraphStyle alloc] init];
    paragraphStyles.alignment                = NSTextAlignmentJustified;
    paragraphStyles.firstLineHeadIndent      = 0.05;    // Very IMP
    
    NSString *stringTojustify                = @"We are what our thoughts have made us; so take care about what you think. Words are secondary. Thoughts live; they travel far.";
    NSDictionary *attributes                 = @{NSParagraphStyleAttributeName: paragraphStyles};
    NSAttributedString *attributedString     = [[NSAttributedString alloc] initWithString:stringTojustify attributes:attributes];
    
    self.lblQuote.attributedText             = attributedString;
    self.lblQuote.numberOfLines              = 0;
    [self.lblQuote sizeToFit];
    

    enter image description here

    Deprecation of UITextAlignmentJustify, not available anymore under iOS 6.

    All possible solutions to justified text are given at this SO link also have a look at this page and iOS6 prerelease Documentation.

    0 讨论(0)
  • 2021-01-04 21:19

    I kind of found a way to make the label Justifiy in iOS 7: i simply set NSBaselineOffsetAttributeName to 0.

    No idea why you need to add this baseline setting on iOS 7, (it works fine on iOS 6).

    NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
            paragraph.alignment = NSTextAlignmentJustified;
    
    NSDictionary *attributes = @{ NSParagraphStyleAttributeName : paragraph,
                                            NSFontAttributeName : self.textLabel.font,
                                  NSBaselineOffsetAttributeName : [NSNumber numberWithFloat:0] };
    
    NSAttributedString *str = [[NSAttributedString alloc] initWithString:content 
                                                              attributes:attributes];
    
    self.textLabel.attributedText = str;
    

    Hope that helps ;)

    0 讨论(0)
提交回复
热议问题