停止仿射变换应用于子视图
Posted
技术标签:
【中文标题】停止仿射变换应用于子视图【英文标题】:Stop affine transform from applying on subview 【发布时间】:2016-09-02 14:06:42 【问题描述】:我有一个UIView
,里面有一个UILabel
。
在UIView
上应用仿射变换后,使用:
myView.transform = CGAffineTransformMakeScale(4, 4);
我的UILabel
(这是 myView 的子视图)也增长了。
有没有办法防止这种情况发生?
我试过了:
1) 在标签上使用CGAffineTransformIdentity
标志。
2) 向 myView 添加一个 superview 并将 myView 添加为 superview 的 subview,并将 label 作为 subview 添加到 superview(而不是 myView)。
它们似乎都不起作用,标签一直在增长。
有什么想法吗?
【问题讨论】:
【参考方案1】:您使用选项 2 回答了您自己的问题。由于您没有提供任何代码,因此不确定为什么它不起作用。下面的操场代码显示它将起作用。取消注释最后一行以转换子视图而不是标签。
import UIKit
import XCPlayground
let superview = UIView(frame: CGRect(x: 10, y: 10, width: 200, height: 200))
XCPlaygroundPage.currentPage.liveView = superview
superview.backgroundColor = UIColor.redColor()
let view = UIView(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
view.backgroundColor = UIColor.greenColor()
superview.addSubview(view)
let label = UILabel(frame: CGRect(x: 20, y: 10, width: 40, height: 40))
label.text = "Hello"
superview.addSubview(label)
//view.transform = CGAffineTransformMakeScale(2, 2)
【讨论】:
以上是关于停止仿射变换应用于子视图的主要内容,如果未能解决你的问题,请参考以下文章