我有一个imageview,按下按钮我也绘制了一些bezier路径和一些文本层。在撤消时,我删除了最后绘制的路径和文本图层。
现在我想调整我的图像视图大小以设置在视图的半部分并在下半部分视图中重复,并希望同时调整所有图层的大小,并且还希望在此之后继续绘制。
答案 0 :(得分:17)
回答太晚了......
但可能这可以帮助别人。 CALayers没有自动调整大小的掩码 你可以用一些技巧来管理它..
- (void)layoutSubviews {
// resize your layers based on the view's new frame
layer.frame = self.bounds;
}
如果您已经创建了UIView的子类,这将有效。如果不是这样,只要引用了图层,就可以在任何地方设置CALayer框架的边界。
答案 1 :(得分:0)
至少有3个选项:
CALayer
的委托layoutSublayers
,然后由setNeedsLayout()
调用fitLayers
下面的示例,选项3 :
extension UIView {
func fitLayers() {
layer.fit(rect: bounds)
}
}
extension CALayer {
func fit(rect: CGRect) {
frame = rect
sublayers?.forEach { $0.fit(rect: rect) }
}
}
// inside UIViewController
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
view.fitLayers()
}
// or
// inside UIView
override func layoutSubviews() {
super.layoutSubviews()
fitLayers()
}