我在使用自动布局和旋转时遇到问题。 在我的应用程序中,我有一个轮子,上面有几个 View 需要旋转以适合圆圈(可以平移、滚动)。
深色方 block 是 MenuView
的背景,它包含一个 UILabel
、两个 UIImageViews
和三个 UIButtons
.所有这些都受到限制,在 XIB
文件中指定。
一切正常,直到我将 View 旋转到 0、90、180、270 以外的其他位置,... MenuView
的所有内容都获得了一个 x 偏移量。
我不知道如何摆脱这种偏移。也许它与 translatesAutoresizingMaskIntoConstraints
有关,但我无法在正确的 View 上正确使用它。希望有人能帮我解决这个问题。
代码
//Menu View Holder
let menuViewHolder = UIView(frame: self.bounds)
self.addSubview(menuViewHolder)
viewHolders.append(menuViewHolder)
//Menu View
let menuView = self.addView(MenuView.self, fromNib: "MenuView")
menuView.colorSet = UIColorSet.getDefaultSet()
menuView.translatesAutoresizingMaskIntoConstraints = true
menuViewHolder.addSubview(menuView)
views.append(menuView)
//Frame
let screenWidth:CGFloat = 320.0
let width:CGFloat = screenWidth
let height:CGFloat = 300.0
menuView.frame = CGRect(x: (self.bounds.width-width)/2.0, y: 0.0, width: width, height: height)
//Rotation
let angle = CGFloat(menuViewIndex)*CGFloat(viewAngle);
//menuViewHolder.transform = CGAffineTransformMakeRotation(angle + CGFloat(M_PI/2.0))
menuViewHolder.layer.transform = CATransform3DMakeRotation(angle + CGFloat(M_PI/2.0), 0, 0, 1)
视觉
最佳答案
好吧,我有点修好了。
我在 UIViewController
的 viewDidLoad
中设置所有框架、旋转和添加 subview 。
当我在 viewDidAppear
中旋转时,一切正常。有点奇怪的是,在代码中依次设置帧和旋转会相互影响。在等待 View 完全设置(通过 viewDidAppear
完成)期间修复了这些问题。
关于ios - 使用自动布局和 CGAffineTransform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34480646/