我正在开发一个iOS应用程序,遇到了一个奇怪的问题。我正在对视图进行调整大小的日志,等等视图确实加载,我有一个ivar,它保存了我在Interface中大小的视图的初始大小。初始CGFrame值为:(x = 0,y= 63,宽度= 284,高度= 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);当我将大小调整回初始帧后,当我检查我的值时,框架rect现在是原点CGPoint (x=0,y=63) CGSize (width=28,height=961)。
这怎么可能呢?这是我第一次处理视图大小调整问题,我对iOS也相当陌生。
发布于 2014-07-10 20:57:45
我本打算把这个写在评论里,但是太长了,所以:
在这些情况下,我喜欢的一个技巧是在我遇到问题的视图的类中重写setFrame:,并在该重写的方法中设置一个断点。如果这样做,那么您可以看到框架何时发生变化,并查看调用堆栈。
它并不总是完全直接前进,凌驾于setFrame:之上。frame属性可以直接设置,但也可以从视图的bounds和center派生,因此您可能需要查找设置视图的bounds或视图的center的东西,而不是frame。
另外,如果视图有一个非标识的transform,这将使frame属性的行为非常奇怪。如果要在视图上设置非标识转换,则应该完全避免框架属性。
https://stackoverflow.com/questions/24686006
复制相似问题