我在界面构建器中添加到按钮的约束是:
正确的超视空间= 10
顶级空间到superview = 10
底层空间到superview> = 10
将空格留给标签> = 10
一切正常,我的布局没问题.
但是当我使用以下代码记录按钮约束时:
NSLog(@"constraints for btnBack is: %@",self.btnBack.constraints);
控制台日志:
constraints for btnBack is:( "<NSContentSizeLayoutConstraint:0x7c35c400 H:[UIButton:0x7c3588a0(102)] Hug:250 CompressionResistance:750>" "<NSContentSizeLayoutConstraint:0x7c35c450 V:[UIButton:0x7c3588a0(92)] Hug:250 CompressionResistance:750>")
我知道顶部和左右和底部约束不应该在这里记录,因为它们是超视图约束而不是按钮约束.
但在这里我没有添加任何宽度和高度约束到我的按钮(即使在代码中).
为什么在控制台中记录约束高度和宽度?
解决方法
同样,如果它具有自然高度,则将该宽度作为intrinsicContentSize.height返回.否则,它将intrinsicContentSize.height设置为UIViewNoIntrinsicmetric.
按钮具有自然尺寸(宽度和高度),由其标题,字体,图像和其他细节决定.因此,其intrinsicContentSize.width和intrinsicContentSize.height都是有效的大小,而不是UIViewNoIntrinsicmetric.
当intrinsicContentSize.width!= UIViewNoIntrinsicmetric时,auto layout会在视图上安装NSContentSizeLayoutConstraint类型的特殊约束.类似地,当intrinsicContentSize.height!= UIViewNoIntrinsicmetric时,auto layout会在视图上安装NSContentSizeLayoutConstraint.
有关这些特殊约束的详细信息,请参阅this answer.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。