swift - 假设已设置边界,则初始化 UIView 中的变量

标签 swift uiview core-graphics

这是一个关于 UIView 的边界变量何时设置和初始化的问题。我的 View 中有一个变量 ballSize,它是使用 View 的边界变量初始化的,如下所示:

private var ballSize: CGSize {
        let size = bounds.size.width / 20
        return CGSize(width: size, height: size)
}

一切都按预期顺利进行。那么 UIView 的边界到底是什么时候设置的呢?假设我可以在 UIView 类中的变量初始化中使用边界,这总是安全的吗?

最佳答案

似乎不允许在 UIView 类中的变量初始化中使用“bounds”,因为这相当于“self.bounds”。事实上,如果我尝试这样做,我会收到“无法在属性初始值设定项内使用实例成员“边界”;属性初始值设定项在“ self ”可用之前运行”错误:

private var ballSize = CGSize(宽度:bounds.size.width/20,高度:bounds.size.height/20)

出于某种原因,问题中的上述代码可以访问“self.bounds”,因为该变量是计算属性。

关于swift - 假设已设置边界,则初始化 UIView 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42290514/

相关文章:

swift - UIScrollView 中的 UIStackView 中的点击检测 UIImageView

swift - LocationManager didEnterRegion 未调用(再次)

ios - UIButton 作为 subview 没有响应

iphone - 着色UIBezierPath

iphone - 在iPhone上绘制自定义图形: CALayer vs. CGContext

ios - 将 OpenGL 纹理渲染到 CGContext 中的最快方法

swift - 非半透明 UITabBar 创建奇怪的灰色条

ios - 动态 View 数的自动布局

objective-c - IBOutlet 在自定义 UIView 中为 nil(使用 STORYBOARD)

ios - Firebase iOS 用户身份验证 : avoiding getting logged out of app