我正在开发一个应用程序而我没有使用storyboard(或任何xib文件)。 Xib文件看起来过于复杂,有时在添加约束时应用程序崩溃没有任何理由,这感觉就像一个巨大的混乱(即使使用xCode重置自动约束)。 当我用纯代码编写它时,我得到了更好的结果,感觉更自然。
目前我正在使用%添加视图并使它们相对(仅限宽度) 并确保视图为超视图宽度的0.5
var someView : UIView = UIView(frame:
CGRect(
origin:CGPoint(
x: 0,
y: otherView.frame.maxY
),
size: CGSize(
width: otherView.frame.width * 0.5,
height: SOME_HEIGHT_CONST
)
)
)
它的效果很好,例如创建一个0.8超大视图宽度的矩形:
问题是,在旋转之后:
不使用故事板时,处理方向的正确方法是什么?是否可以将视图大小绑定到方向更改?
答案 0 :(得分:2)
"正确"就像你说的那样...或者,正如我所说的那样,#34;最佳实践" ...会让你使用LayoutConstraints,并根据需要调整那些属性(而不是修改框架的属性 - 例如宽度 - 直接)。
根据您支持的iOS版本,我建议您查看WWDC 2015视频(特别是有关Auto Layout / LayoutConstraints的视频)和2014年视频(TransitionCoordinators,PresentationControllers和ViewControllers的更新)。这将为您提供基础知识,以便您更好地了解在方向,内容,大小或位置变化期间调用哪些函数。
答案 1 :(得分:0)
您正在将super
与superview
混合。 super
指的是超类的方法或属性。因此,在您的情况下,super.frame.width
与self.frame.width
与frame.width
相同。
我想你的意思是superview.frame.width
。