不使用故事板时正确处理iOS方向的方法

时间:2015-07-19 10:54:09

标签: ios objective-c iphone swift

我正在开发一个应用程序而我没有使用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超大视图宽度的矩形: before rotate

问题是,在旋转之后: after rotate

不使用故事板时,处理方向的正确方法是什么?是否可以将视图大小绑定到方向更改?

2 个答案:

答案 0 :(得分:2)

"正确"就像你说的那样...或者,正如我所说的那样,#34;最佳实践" ...会让你使用LayoutConstraints,并根据需要调整那些属性(而不是修改框架的属性 - 例如宽度 - 直接)。

根据您支持的iOS版本,我建议您查看WWDC 2015视频(特别是有关Auto Layout / LayoutConstraints的视频)和2014年视频(TransitionCoordinators,PresentationControllers和ViewControllers的更新)。这将为您提供基础知识,以便您更好地了解在方向,内容,大小或位置变化期间调用哪些函数。

答案 1 :(得分:0)

您正在将supersuperview混合。 super指的是超类的方法或属性。因此,在您的情况下,super.frame.widthself.frame.widthframe.width相同。

我想你的意思是superview.frame.width