gpt4 book ai didi

ios - 旋转 View 是否与自动布局兼容?

转载 作者:技术小花猫 更新时间:2023-10-29 11:07:59 26 4
gpt4 key购买 nike

我学会了如何使用仿射变换旋转 View (参见 here)。我还了解了自动布局(请参阅 herehere),甚至是编程式自动布局(请参阅 herehere)。但是,我不知道如何让自动布局与旋转 View 一起使用。

这张图片显示了我想做的事情:

enter image description here

我认为问题出在宽度和高度因旋转而改变。有没有办法让旋转 View 填充它的 super View ?是否有一些技巧可以让自动布局工作,或者它只是在轮换后不兼容?

(我只学过 Swift,但如果您更熟悉 Objective-C,我很乐意仔细阅读答案。)

更新

按照@VinayJain 的建议,我做了以下事情:

  • 将 subview 边缘固定到 Storyboard中的父 View 。
  • created IBOutlets用于 subview 所有边上的间距约束。

    @IBOutlet weak var rightSpace: NSLayoutConstraint!
    @IBOutlet weak var leftSpace: NSLayoutConstraint!
    @IBOutlet weak var topSpace: NSLayoutConstraint!
    @IBOutlet weak var bottomSpace: NSLayoutConstraint!
  • 旋转 subview

    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。我只需要它自行调整。然而,旋转搞砸了。效果如下图所示:

enter image description here

最佳答案

我在尝试通过 HDMI/AirPlay 将外部视频从 iOS 运行到旋转的电视屏幕时遇到了这个问题。

有时,电视会有将信号“旋转”90 度或 180 度等的设置,但通常没有该选项。

有了这样的“包装器” View ,我可以强制外部屏幕上的 View Controller 旋转其内容,而内容实际上并不知道有什么不同。

let contentsView = SomeWildCustomViewUsingAutoLayoutEtc()
let wrapper = RotatingWrapperView(contentsView)
wrapper.translatesAutoresizingMaskIntoConstraints = false
parentView.addSubview(wrapper)
// ...
wrapper.rotation = .upsideDown

RotatingWrapperView 的来源:https://github.com/quantcon/UIKit/blob/master/AutoLayoutRotationDemo/Views/RotatingWrapperView.swift

关于ios - 旋转 View 是否与自动布局兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30841064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com