我在使用自动版式和旋转时遇到问题。
在我的应用程序中,我有一个轮子,在该轮子上有几个视图需要旋转以适合圆圈(该视图可以平移,可滚动)。

深色方块是MenuView的背景,它包含UILabel,两个UIImageViews和三个UIButtons。所有这些都由XIB文件中指定的约束保持在适当位置。

一切正常,直到我将视图旋转到0、90、180、270等之外的其他位置为止,其中MenuView的所有内容都获得x偏移。

我不知道如何摆脱这种偏移。也许它与translatesAutoresizingMaskIntoConstraints有关,但是我无法在正确的视图上找出它的正确用法。希望有人可以帮助我解决这个问题。

代码

//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)

视觉

ios - 使用自动布局和CGAffineTransform-LMLPHP

最佳答案

好吧,我有点修复了。

我在viewDidLoadUIViewController中设置所有框架,旋转并添加子视图。
当我旋转viewDidAppear时,一切正常。设置帧和一个接一个地循环旋转会相互影响,这有点奇怪。在等待视图完全设置(通过viewDidAppear完成)时,可以解决这些问题。

10-07 17:41