【发布时间】:2015-06-14 05:41:27
【问题描述】:
转换 UIView 会影响其框架。转换 UIView 的层也会以同样的方式影响视图框架。所以缩放视图的层,缩放框架。我试图理解为什么对图层的转换会影响视图框架(即使设置了view.layer.masksToBounds = NO)。
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
NSLog(@"Before: %@", NSStringFromCGRect(view.frame));
// Output: {{0, 0}, {50, 50}}
// View transform applied
view.transform = CGAffineTransformMakeScale(2, 2);
NSLog(@"%@", NSStringFromCGRect(view.frame));
// Output: {{-25, -25}, {100, 100}}
// Layer transform applied
view.transform = CGAffineTransformIdentity;
view.layer.transform = CATransform3DMakeScale(2, 2, 1);
NSLog(@"%@", NSStringFromCGRect(view.frame));
// Output: {{-25, -25}, {100, 100}}
【问题讨论】:
-
一旦你有一个变换,你不应该看帧值。来自 UIView 上
frame属性的文档:“警告如果transform属性不是身份转换,则此属性的值未定义,因此应忽略。” -
谢谢@DavidRönnqvist。这正是我需要听到的那种解释。如果您将此作为答案,我会接受。
标签: ios objective-c cocoa-touch uiview catransform3d