War*_*ing 6 cocoa-touch objective-c uiview catransform3d ios
转换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}}
Run Code Online (Sandbox Code Playgroud)
一旦进行了变换,就不应该查看帧值,因为它未定义在那时包含的内容.这在UIView上的frame属性文档中提到:
警告如果
transform属性不是标识转换,则此属性的值未定义,因此应忽略.
如果您需要修改框架,则必须使用center和bounds属性来修改框架.
| 归档时间: |
|
| 查看次数: |
4111 次 |
| 最近记录: |