对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}}
transform
属性不是标识变换,则此属性的值未定义,因此应将其忽略。” - David Rönnqvist