该应用程序在更新到 Xcode 8 Beta 6 和 Swift 3 之前运行良好。我没有进行任何其他更改,但现在我遇到了两个问题。
首先,一些随机视图不再显示。它们只是方形的彩色盒子。但是,它们上方的视图会显示出来。
在界面生成器中:
在模拟器上:
其次,我的模型 VC 在 segued 时不再出现。以前是这样,我可以看到正在调用 segue,但现在它不存在。
如果有人可以提供有关任一问题的想法,将不胜感激。
该应用程序在更新到 Xcode 8 Beta 6 和 Swift 3 之前运行良好。我没有进行任何其他更改,但现在我遇到了两个问题。
首先,一些随机视图不再显示。它们只是方形的彩色盒子。但是,它们上方的视图会显示出来。
在界面生成器中:
在模拟器上:
其次,我的模型 VC 在 segued 时不再出现。以前是这样,我可以看到正在调用 segue,但现在它不存在。
如果有人可以提供有关任一问题的想法,将不胜感激。
因此,在 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”中,视图根本就没有出现。现在他们恢复了正常。我不知道发生了什么变化,但这绝对解决了它。
这绝对是 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。
iOS 10 UIView 生命周期和自动布局存在问题。
我的意思是,在所有 UI 元素上的框架等方法中viewDidLoad
都是viewWillAppear
`{{0,0},{1000,1000}}。
在诸如设置圆角的情况下,使圆角变为 500 像素,并且您将获得不可见的 UI 组件:)
我如何解决这个问题是通过在子类viewDidLayoutSubview
中UIViewControllers
或子类中设置圆角。 layoutSubviews
UIView