Ios 为什么视图在旋转M_PI*0.25(但不是旋转M_PI*0.26)后消失

Ios 为什么视图在旋转M_PI*0.25(但不是旋转M_PI*0.26)后消失,ios,debugging,ios7,uiview,rotation,Ios,Debugging,Ios7,Uiview,Rotation,我试图回答这个关于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 = CGAffineTr

我试图回答这个关于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.26);
这是它应该做的。景色不再消失

我已经在设备上测试了它,就像在模拟器中一样:

以下是它的视频,在模拟器中测试:

附言:

它对我来说就像一只虫子

编辑:

看起来这种行为(bug?)是由自动布局机制引起的

您可以通过单击序列图像板文件关闭它,在Xcode的右侧应该有一个选项卡 “显示文件检查器”并取消选中此框:

下面的视频证明了这实际上是Autolayout的问题:


但这仍然不能回答问题。

据我所知,使用“经典”方法来更改受自动布局约束的视图层次结构的内容的结果或多或少是未定义的

所以这实际上不是一个bug。若您想以编程方式更改布局,您需要做的是将更改转换为自动布局约束的更改。这可以通过将
translatesAutoResizengMaskintoConstraints
设置为YES来自动完成

也请看一看

self.label.transform = CGAffineTransformMakeRotation(M_PI * 0.26);