在自动布局中方向更改为横向时隐藏视图

ios swift ios-autolayout

1276 观看

5回复

141 作者的声誉

我正在创建一个示例应用程序,在其中复制Facebook屏幕以练习自动布局。当我以纵向模式运行登录屏幕时,它看起来很完美。

问题是方向更改为横向后,所有视图都会由于标题图像而崩溃,如下所示

我想要的是,在横向模式下,标题图像消失,以便其他视图获得其空间。我不想使用scrollview。

我尝试了这个:

headerImageView.isHidden = true

但是结果是这样的 :imageview消失了,但是没有离开它的空间。谁能建议我一个好的解决方案?

Ps对不起,由于我的声誉,以这种方式拍摄的图像。

作者: kinza 的来源 发布者: 2017 年 9 月 15 日

回应 5


0

230 作者的声誉

决定

如果隐藏图像,它将不会只显示给用户,但是屏幕上的图像将使用空间。更好的方法是,当方向更改为“风景”时,可以将“图像高度”设置为0。您可以创建图像的高度约束出口并根据方向进行更改。此方法在更改位置之前被调用。您需要创建Image的Height约束的轮廓。

@IBOutlet var heightConstraint : NSLayoutConstraint!


       override func willRotate(to toInterfaceOrientation: UIInterfaceOrientation, duration: TimeInterval)
            {
                if toInterfaceOrientation == .landscapeLeft || toInterfaceOrientation == .landscapeRight{
    // Imageview height constraint outlate
                    heightConstraint.constant = 0
                }
                else{
                    heightConstraint.constant = 100
                }
            }

在图片中看到,我指出了如何在图片中设置高度限制

作者: Hiren 发布者: 2017 年 9 月 15 日

8

1964 作者的声誉

使用自动版式时,您可以利用尺寸类别。请参阅下面的描述或此处的示例:https : //github.com/jonaszmclaren/AutolayoutExample

将图像视图的宽度和高度(wC hC-横向的iPhone)和wR hC(iphone横向的)设置为未安装:

在此处输入图片说明

未对wC hC和wR hC启用文本字段和图像视图之间的约束:

在此处输入图片说明

最后,对于wC hC和wR hC,您必须定义文本字段的顶部约束-我是在视图顶部进行操作的。

在此处输入图片说明

这样,用于肖像的图像视图将可见,文本视图将固定到图像视图,而在横向图像视图中将被隐藏,文本字段将固定在视图顶部。

作者: jonaszmclaren 发布者: 2017 年 9 月 15 日

0

601 作者的声誉

isHidden只会更改视图的可见性。它不会将其从该位置移除。要解决此问题,请创建标题视图的高度约束出口,并在方向更改时将其更改为0。

例如:

headerViewHeightConstraint.constant = 0.0
self.view.layoutIfNeeded()

并再次恢复为人像模式设置的高度。

headerViewHeightConstraint.constant = // height value which you want to set
self.view.layoutIfNeeded()
作者: Martin 发布者: 2017 年 9 月 15 日

1

401 作者的声誉

最好的方法是在这种情况下使用scrollView。如果不想使用scrollView,则必须为最后一个按钮提供底部约束,并将该特定约束的优先级设置为低。它适用于当前屏幕(横向和纵向),但是当您选择小屏幕(例如4s或5)时,自动布局的目的将失败。

像我一样

作者: Vaibhav Parmar 发布者: 2017 年 9 月 15 日

0

11954 作者的声誉

另一个选择是将视图放置在堆栈视图中。然后隐藏headerImageView应该恢复未使用的空间。

作者: Alain T. 发布者: 2017 年 9 月 15 日
32x32