场景,一个有图片有文字的按钮在其父控件上加了上左的约束,而后,有须要要调整按钮与图片之间的间距,第一想法就是设置title insets 的left。字体
而后问题出现了,这个按钮的文字竟然显示不全了,也就是说在咱们设置了title insets后,系统没有再次sizeToFit相似的约束 ,固然sizeToFit是用frame时的让其自动适应内容大小,在约束的状况下就得用约束了,可是又由于不一样系统下的字号字体大小是不同的,因此titleLabel的宽度也是不定的。spa
自定义一个button,重写code
intrinsicContentSize
就能够了。在sb中设置title insets,而后就能跟sizeToFit同样的效果了。blog
- (CGSize) intrinsicContentSize { CGSize s = [super intrinsicContentSize]; // 这里我只加了左间距,其余的也就没有必要写出来了 CGFloat w = s.width + self.titleEdgeInsets.left; return CGSizeMake(w,s.height); }