4

该应用程序在更新到 Xcode 8 Beta 6 和 Swift 3 之前运行良好。我没有进行任何其他更改,但现在我遇到了两个问题。

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

在界面生成器中:

意见

在模拟器上:

只锁定模拟器

其次,我的模型 VC 在 segued 时不再出现。以前是这样,我可以看到正在调用 segue,但现在它不存在。

如果有人可以提供有关任一问题的想法,将不胜感激。

4

4 回答 4

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”中,视图根本就没有出现。现在他们恢复了正常。我不知道发生了什么变化,但这绝对解决了它。

于 2016-08-25T12:04:16.080 回答
1

自动布局约束可能发生了一些事情。仔细检查这些设置是否正确。

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

预览视图

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

于 2016-08-18T17:04:52.293 回答
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。

于 2016-09-11T09:32:39.233 回答
0

iOS 10 UIView 生命周期和自动布局存在问题。

我的意思是,在所有 UI 元素上的框架等方法中viewDidLoad都是viewWillAppear`{{0,0},{1000,1000}}。

在诸如设置圆角的情况下,使圆角变为 500 像素,并且您将获得不可见的 UI 组件:)

我如何解决这个问题是通过在子类viewDidLayoutSubviewUIViewControllers或子类中设置圆角。 layoutSubviewsUIView

于 2016-09-16T14:42:03.257 回答