CGRect给出了奇怪的尺寸

时间:2014-07-10 20:48:03

标签: ios objective-c cgrect

我正在开发一个iOS应用程序并遇到了一个奇怪的问题。我正在做一个调整视图大小的日志,所以视图加载了,我有一个ivar,它保存了我在Interface Builder中调整大小的视图的初始大小。初始CGFrame rect是:(x = 0,y = 63,width = 284,height = 705)。我用来保存初始值的代码是:

filesFrame = self.fileView.frame;

我触摸self.fileView.frame的唯一地方是:

 self.fileView.frame = filesFrame;
 self.fileView.frame = fullFilesFrame;    

它们分别位于两个不同的位置 fullFilesFrame定义为:

fullFilesFrame = CGRectMake(self.view.frame.origin.x,self.view.frame.origin.y+63,
    self.view.frame.size.height,self.view.frame.size.width+63);

当我重新调整到初始帧后检查我的值时,帧矩形现在是原点CGPoint(x = 0,y = 63) CGSize(宽度= 28,高度= 961)

这怎么可能? 这是我第一次处理调整视图的大小,而且我也是iOS的新手。

1 个答案:

答案 0 :(得分:1)

我打算将其放在评论中,但这太长了,所以:

在这些情况下我喜欢的一个技巧是覆盖我遇到问题的视图类中的setFrame:,并在该重写方法中设置断点。如果你这样做,那么你可以看到帧的变化,看看调用堆栈。

它并不总是完全直截了当,压倒setFrame:。可以直接设置frame属性,但 也可以从视图的boundscenter派生,因此您可能需要查找设置视图bounds或视图center而不是frame的内容。

此外,如果视图具有非身份transform,则会使frame属性的行为非常奇怪。如果要在视图上设置非身份转换,则应该完全避免使用frame属性。