美文网首页
- (void)sizeToFit 方法遇到的问题

- (void)sizeToFit 方法遇到的问题

作者: 啷里个啷里个啷个里个啷 | 来源:发表于2017-03-02 16:30 被阅读0次

    view调用 - (void)sizeToFit 方法前,view的frame不能是用 - (void)sizeToFit 方法得到的。

    例如;

    -(void)btnClick{

    NSMutableAttributedString*attributedString1 = [[NSMutableAttributedString alloc] initWithString:desc attributes: attributeDict];

    [attributedString1 beginEditing];

    //把行间距模型加入NSMutableAttributedString模型

    [attributedString1 addAttribute:NSParagraphStyleAttributeName value:paragraphStyle1 range:NSMakeRange(0, desc.length)];

    [attributedString1 addAttribute:NSKernAttributeName value:@(1.8)range:NSMakeRange(0, desc.length)];

    [attributedString1 endEditing];

    [_descLabel setAttributedText:attributedString1];

    [_descLabel sizeToFit];

    }

    当我不停的点击这个按钮的时候,你会发现 _descLabel 的文本位置会发生变化。

    解决方案:

    在重复调用的方法中,先设置一次 label 的 frame,再调用 - (void)sizeToFit 方法。如下面的黑色字体: 

    -(void)btnClick{

    [_descLabel setFrame:CGRectMake(15,70,CGRectGetWidth(_whiteView.frame) -15-15,1)];

    NSMutableAttributedString*attributedString1 = [[NSMutableAttributedString alloc] initWithString:desc attributes: attributeDict];

    [attributedString1 beginEditing];

    //把行间距模型加入NSMutableAttributedString模型

    [attributedString1 addAttribute:NSParagraphStyleAttributeName value:paragraphStyle1 range:NSMakeRange(0, desc.length)];

    [attributedString1 addAttribute:NSKernAttributeName value:@(1.8)range:NSMakeRange(0, desc.length)];

    [attributedString1 endEditing];

    [_descLabel setAttributedText:attributedString1];

    [_descLabel sizeToFit];

    }

    相关文章

      网友评论

          本文标题:- (void)sizeToFit 方法遇到的问题

          本文链接:https://www.haomeiwen.com/subject/dpkkgttx.html