【发布时间】:2014-03-18 09:49:01
【问题描述】:
我试图回答这个关于 view.frame 和 view.bounds 之间区别的问题:
我写过这个:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self showPropertiesOfLabel];
self.label.transform = CGAffineTransformMakeRotation(M_PI * 0.25);
[self showPropertiesOfLabel];
}
- (void) showPropertiesOfLabel {
NSLog(@"bounds.origin.x: %f", self.label.bounds.origin.x);
NSLog(@"bounds.origin.y: %f", self.label.bounds.origin.x);
NSLog(@"bounds.size.width : %f", self.label.bounds.size.width);
NSLog(@"bounds.size.height: %f", self.label.bounds.size.height);
NSLog(@"frame.origin.x : %f", self.label.frame.origin.x);
NSLog(@"frame.origin.y : %f", self.label.frame.origin.y);
NSLog(@"frame.size.width : %f", self.label.frame.size.width);
NSLog(@"frame.size.width : %f", self.label.frame.size.height);
}
但让我印象深刻的是,我的观点被我称为“标签”之后
self.label.transform = CGAffineTransformMakeRotation(M_PI * 0.25);
消失了!但仍然报告它的框架和边界值(相当恰当)。
最有趣的部分是,如果我改变了旋转角度:
self.label.transform = CGAffineTransformMakeRotation(M_PI * 0.26);
它可以正常工作。视图不再消失!
我已经在设备上和模拟器中测试过:
这是它的视频,在模拟器中测试:
PS:
它在我看来就像一个错误。
编辑:
看起来这种行为(错误?)是由自动布局机制引起的。
您可以通过单击故事板文件将其关闭,在 Xcode 的右侧应该有选项卡 “显示文件检查器”并取消选中此框:
这是证明这实际上是 Autolayout 问题的视频:
但这仍然不能回答问题。
【问题讨论】:
标签: ios debugging ios7 uiview rotation