我学会了如何用仿射变换旋转视图(请参见here)。我还了解了自动布局(请参阅here和here),甚至了解编程式自动布局(请参阅here和here)。但是,我不知道如何让自动布局使用旋转视图。旋转视图与自动布局兼容?
此图片显示我想要做什么:
我觉得麻烦来自于宽度和高度,因为旋转的变化。有什么办法让旋转视图填充它的超级视图吗?是否有一些技巧让自动布局工作,或只是在旋转后不兼容?
(我只学会了斯威夫特,但我会很高兴通过Objective-C的答案涉水如果这就是你比较熟悉。)
更新
继@ VinayJain的建议,我做了以下事情:
- 固定子视图边缘到故事板中的超级视图。
created IBOutlets对于子视图各边的间距约束。
@IBOutlet weak var rightSpace: NSLayoutConstraint! @IBOutlet weak var leftSpace: NSLayoutConstraint! @IBOutlet weak var topSpace: NSLayoutConstraint! @IBOutlet weak var bottomSpace: NSLayoutConstraint!
旋转子视图
subview.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))
改变的约束从插座上
self.rightSpace.constant = CGFloat(0) self.leftSpace.constant = CGFloat(0) self.topSpace.constant = CGFloat(0) self.bottomSpace.constant = CGFloat(0)
但它是在这一点上,我意识到,我真的不需要更改间距值。我希望间距保持为0.我只是需要它来调整自己。然而,轮换混乱了。效果显示如下图:
你有没有找到一个解决方案?我试图钉在子视图的顶部的超级视图的权利(等各方面)无济于事。 – BFeher
@BFeher,是的,我做了一个自定义的'UIView'(上面的黄色图片)。它由三个视图组成:父视图,子视图和孙子视图。孙子视图是我想要显示的实际内容旋转(文本视图等)。子视图是实际旋转的内容。 (孙子视图位于子视图中,并且不知道旋转。)子视图以编程方式设置为与父视图大小相同。然后,您可以在父视图上设置约束,以将其安排在故事板中(上图中的蓝色图像)。 – Suragch
查看我的当前实现[github项目](https://github.com/suragch/iOS-Mongol-App-Components/blob/master/Mongol%20App%20Componants/UIMongolTextView.swift)。特别注意'layoutSubviews()'方法。它也处理方向变化。它不是一个完美的解决方案,但它可以像故事板中的任何其他'UIView'一样设置约束条件。 – Suragch