假设您有一个UIView
或一个CALayer
可以进行自己的(矢量)绘图,并且您希望它在任何尺寸下都保持清晰,即使在缩放 View 时也是如此或层。当使用 transform
属性缩放时,如何让它重绘?强制更改 bounds
而不是使用 transform
的唯一方法是什么?或者在每一步都调用 setNeedsDisplay
?
为什么 UIImageView
的行为似乎有所不同(即它似乎总是适本地缩放其源图像,即使使用 transform
和 bounds
不变)?是因为它是唯一直接设置底层 CALayer
的 content
属性的情况吗?
最佳答案
如果 CALayer
上的 needsDisplayOnBoundsChange
在您的情况下还不够,您可以子类化 CALayer
并实现 + (BOOL)需要DisplayForKey:(NSString *)key
方法。示例:
+ (BOOL)needsDisplayForKey:(NSString *)key {
if ([key isEqualToString:@"transform"]) {
return YES;
}
return [super needsDisplayForKey:key];
}
现在,每次 transform
属性更改时,您的图层都应该重新绘制。如果您的绘图范围很广,这可能会导致动画出现性能问题。
关于ios - 在缩放/变换时强制重绘 UIView 或 CALayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16670829/