在更新到Xcode 8 Beta 6和Swift 3之前,应用程序运行得很好。我没有改变,但现在我有两个问题。
首先,一些随机视图不再显示。它们只是方形的彩色盒子。上面的观点显示出来了。
在Interface Builder中:
在模拟器上:
其次,我的模型VC在被诱惑时不再出现。它之前做过,我可以看到segue正在调用,但现在它“不在那里。”
如果有人能提出任何一个问题的想法,我们将不胜感激。
答案 0 :(得分:3)
在Xcode 7 / Swift 2之间 - > Xcode 8 / Swift 3,改变了如何将UIView变成圆形。这是我现在的代码:
func roundView (_ viewToRound: UIView) {
viewToRound.layer.cornerRadius = 20
//viewToRound.layer.cornerRadius = (viewToRound.frame.width/2)
viewToRound.clipsToBounds = true
}
正如您所看到的,我已将cornerRadius方法替换为显式“20”,而不是从视图大小中推断出来。使用我之前的“frame.width”,视图根本就没有显示出来。现在他们恢复正常了。我不知道发生了什么变化,但这肯定已经解决了。
答案 1 :(得分:1)
汽车布局限制可能发生了一些事情。仔细检查这些设置是否正确。
此外,您无需使用模拟器来验证这一点;使用助理编辑器的预览视图:
作为一个完整性检查,我要做的第一件事是将视图中的所有元素重置为建议的约束,看看是否能解决问题。
答案 2 :(得分:0)
这绝对是Xcode 8中的AutoLayout问题。如果不使用AutoLayout,问题就不存在了。我使用协议来解决这个问题:
protocol Roundable {}
extension Roundable where Self: UIView{
func roundCorners(){
self.layer.cornerRadius = self.bounds.height / 2
}
}
class CustomView: UIView, Roundable {
override var bounds: CGRect {
didSet{
roundCorners()
}
}
}
使视图涉及CustomView,它将显示为四舍五入。我在这里使用一个协议,因为通过这种方式,可以很容易地扩展已经存在的UIView子类,并具有圆角的功能。当然可以直接在bounds属性观察器中设置cornerRadius。
答案 3 :(得分:0)
iOS 10 UIView生命周期&存在问题。自动版式。
我的意思是viewDidLoad
& viewWillAppear
所有UI元素上的框架都是“{{0,0},{1000,1000}}。
在设置圆角的情况下,圆角为500px&你得到了不可见的UI组件:)
我如何解决此问题的方法是在viewDidLayoutSubview
中的UIViewControllers
或layoutSubviews
子类中的UIView
设置圆角。