变换使尺寸不同
Posted
技术标签:
【中文标题】变换使尺寸不同【英文标题】:Transform makes sizes different 【发布时间】:2016-11-10 16:59:30 【问题描述】:我有一个旋转盒子的功能,效果很好。当用户完成旋转时,我想将父视图适合旋转框,但它完全不成比例,我不知道为什么,因为我只是在旋转视图和父视图之间交换尺寸和属性.
旋转:
func rotateThisView(gesture : UIRotationGestureRecognizer)
if activated
if gesture.state == .Began || gesture.state == .Changed
wrapView.transform = CGAffineTransformRotate(wrapView.transform, gesture.rotation)
gesture.rotation = 0
如前所述,这可以正常工作,但是当用户完成编辑(旋转)后,我运行此功能:
wrapPoints = wrapView.center
wrapDimensions = wrapView.frame
wrapRotation = wrapView.transform
print(wrapPoints, wrapDimensions, wrapRotation)
wrapView.frame = CGRect(x: 0, y: 0, width: wrapDimensions.width, height: wrapDimensions.height)
wrapView.transform = CGAffineTransformIdentity
wrapView.center = center
frame = CGRect(x: 0, y: 0, width: wrapDimensions.width, height: wrapDimensions.height)
center = wrapPoints
transform = wrapRotation
这就是一切不成比例的地方。我已经包含了两个屏幕截图来显示发生了什么。父视图变大,旋转后的视图变得异常大。
希望有人可以帮助我。
【问题讨论】:
你真的想用它的超级视图来改变它的框架吗? 是的,它是一个自定义 UIView 类 【参考方案1】:你应该把wrapView.frame = CGRect(x: 0, y: 0, width: wrapDimensions.width, height: wrapDimensions.height)
的位置换成wrapView.transform = CGAffineTransformIdentity
的位置
wrapView.transform = CGAffineTransformIdentity
wrapView.frame = CGRect(x: 0, y: 0, width: wrapDimensions.width, height: wrapDimensions.height)
wrapView.center = center
【讨论】:
不幸的是没有区别 你能提供一个示例项目吗?我们需要更多信息来帮助您 很遗憾,我不能。我通过围绕旋转视图制作另一个视图并将站点设置为该视图来解决它。它看起来相当笨重,但它确实有效。不过,我仍然想看看如何在一个视图中解决它以上是关于变换使尺寸不同的主要内容,如果未能解决你的问题,请参考以下文章