Jus*_*ork 15 constraints storyboard uibutton ios
到目前为止,我所做的一切都很好,直到昨天我将Xcode更新为版本8.
如果我不使用任何约束,我可以看到按钮,但当我将约束应用于它们消失的按钮时,无论是什么或有多少约束(高度,垂直间距,拖尾等......)我都适用.
当我点击按钮时,它们表现正常(事件总是被发送,所以我认为它们实际上位于那里(?)).我尝试改变文本颜色,背景颜色,(甚至添加一个新的UIButton),但最终没有运气.我看不到按钮.当我更改背景颜色时,Centered View我可以在应用程序上看到此更改.最奇怪的部分是当我点击Debug View HierarchyXcode看看发生了什么时,一切看起来都很好; 我可以看到所有按钮都按照我的预期定位.
在iPhone 5(iOS 9.3.5)和iPhone 6(iOS 10)上测试应用程序.
我使用的是Swift 2.3,iOS 10和Xcode 8.
这是Xcode 8上的错误吗?如何解决这个问题?
更新:
我刚刚意识到在UILabel和UIImageView上也出现了相同的约束问题.它们看起来没有约束,但是当我添加任何约束时它们就消失了.
Tef*_*ffi 20
通过在设置任何与布局相关的属性(如clipToBounds等)之前强制布局来解决这个问题......棘手的部分是何时何地调用layoutIfNeeded.
在我的例子中,我有一个具有水平,顶部和高度约束的UIButton.显然在Xcode 8上,我的按钮标题突然丢失了.然后我移除了高度限制后出现了很奇怪的标题.此行为表明可能在视图的布局周期内出现问题.我需要有高度约束,所以删除它不是真正的解决方案.所以我尝试layoutIfNeeded在设置约束之前调用但没有效果.
我通过处理它的NSObject类在控制器上的viewDidLoad上生成此按钮.我的解决方案是layoutIfNeeded在调用setUps按钮的方法之前强制执行a .
- (void)viewDidLoad {
[super viewDidLoad];
[self.view layoutIfNeeded];
//editBooking - NSObject class where the button gets configured.
[_editBooking setUpViews];
}
Run Code Online (Sandbox Code Playgroud)
相关问题:clipsToBounds导致UIImage无法在iOS10和XCode 8中显示
编辑:
"我认为(0,0,1000,1000)绑定初始化是Xcode从IB实现视图的新方式.在Xcode8之前,视图是在xib中使用其配置的大小创建的,然后根据屏幕调整大小.但是现在, IB文档中没有配置的大小,因为大小取决于您的设备选择(在屏幕的底部)."
参考:自Xcode 8和iOS10以来,viewDidLayoutSubviews上的视图大小不正确
来自Apple发行说明:
发送layoutIfNeeded到视图不会移动视图,但在早期版本中,如果视图已将translateOutoresizingMaskIntoConstraints设置为NO,并且如果它是通过约束定位的,则layoutIfNeeded将移动视图以匹配布局引擎,然后再将布局发送到子树.这些更改可以纠正此行为,并且接收器的位置和通常其大小不会受layoutIfNeeded的影响.
某些现有代码可能依赖于现在已更正的此错误行为.在iOS 10之前链接的二进制文件没有行为更改,但是在iOS 10上构建时,您可能需要通过将-layoutIfNeeded发送到前一个接收器的translatesAutoresizingMaskIntoConstraints视图的超级视图来纠正某些情况,或者之前定位和调整它的大小(或之后,取决于您所希望的行为)layoutIfNeeded.
参考:iOS10发行说明
我错过了将 UIButton 类设置为我的自定义类的要点。我检查了我的自定义类,发现我在awakeFromNib()方法上设置了圆角半径。我在设置圆角半径之前打电话,layoutIfNeeded()这是我的情况的解决方案。
| 归档时间: |
|
| 查看次数: |
10152 次 |
| 最近记录: |