Xcode 8 - 一些视图& VC没有出现在模拟器上

时间:2016-08-18 16:55:53

标签: ios swift xcode xcode8-beta6

在更新到Xcode 8 Beta 6和Swift 3之前,应用程序运行得很好。我没有改变,但现在我有两个问题。

首先,一些随机视图不再显示。它们只是方形的彩色盒子。上面的观点显示出来了。

在Interface Builder中:

Views

在模拟器上:

Only locks on simulator

其次,我的模型VC在被诱惑时不再出现。它之前做过,我可以看到segue正在调用,但现在它“不在那里。”

如果有人能提出任何一个问题的想法,我们将不胜感激。

4 个答案:

答案 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)

汽车布局限制可能发生了一些事情。仔细检查这些设置是否正确。

此外,您无需使用模拟器来验证这一点;使用助理编辑器的预览视图:

preview view

作为一个完整性检查,我要做的第一件事是将视图中的所有元素重置为建议的约束,看看是否能解决问题。

答案 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中的UIViewControllerslayoutSubviews子类中的UIView设置圆角。