十一岁的加重songxing10000…… ------ 回到博主首页

UIView的intrinsicContentSize方法,在按钮中重写

场景,一个有图片有文字的按钮在其父控件上加了上左的约束,然后,有需要要调整按钮与图片之间的间距,第一想法就是设置title insets 的left。

然后问题出现了,这个按钮的文字居然显示不全了,也就是说在我们设置了title insets后,系统没有再次sizeToFit类似的约束 ,当然sizeToFit是用frame时的让其自动适应内容大小,在约束的情况下就得用约束了,但是又因为不同系统下的字号字体大小是不一样的,所以titleLabel的宽度也是不定的。

自定义一个button,重写

intrinsicContentSize

就可以了。在sb中设置title insets,然后就能跟sizeToFit一样的效果了。

 

- (CGSize) intrinsicContentSize {
    CGSize s = [super intrinsicContentSize];

    // 这里我只加了左间距,其他的也就没有必要写出来了
    CGFloat w = s.width + self.titleEdgeInsets.left;
    return CGSizeMake(w,s.height);
}

 

posted @ 2017-02-14 14:08  songxing10000  阅读(4024)  评论(0编辑  收藏  举报