停止仿射变换应用于子视图

Stop affine transform from applying on subview

我有一个 UIView,里面有一个 UILabel

UIView 上应用仿射变换后使用:

myView.transform = CGAffineTransformMakeScale(4, 4);

我的 UILabel(它是 myView 的子视图)也在增长。

有什么办法可以避免这种情况吗?

我试过了:

1) 在标签上使用 CGAffineTransformIdentity 标志。

2) 将父视图添加到 myView 并将 myView 添加为父视图的子视图,并将标签作为子视图添加到父视图(而不是 myView)。

它们似乎都没有用,标签一直在增长。

有什么想法吗?

您用选项 2 回答了您自己的问题。不确定为什么它不起作用,因为您没有提供任何代码。下面的 playground 代码显示它可以工作。取消注释最后一行以转换子视图而不是标签。

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)