我在使用自动版式和旋转时遇到问题。
在我的应用程序中,我有一个轮子,在该轮子上有几个视图需要旋转以适合圆圈(该视图可以平移,可滚动)。
深色方块是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)
视觉
最佳答案
好吧,我有点修复了。
我在viewDidLoad
的UIViewController
中设置所有框架,旋转并添加子视图。
当我旋转viewDidAppear
时,一切正常。设置帧和一个接一个地循环旋转会相互影响,这有点奇怪。在等待视图完全设置(通过viewDidAppear
完成)时,可以解决这些问题。