首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGRect给出了奇怪的尺寸

CGRect给出了奇怪的尺寸
EN

Stack Overflow用户
提问于 2014-07-10 20:48:03
回答 1查看 81关注 0票数 1

我正在开发一个iOS应用程序,遇到了一个奇怪的问题。我正在对视图进行调整大小的日志,等等视图确实加载,我有一个ivar,它保存了我在Interface中大小的视图的初始大小。初始CGFrame值为:(x = 0,y= 63,宽度= 284,高度= 705)。用于保存初始值的代码是:

代码语言:javascript
复制
filesFrame = self.fileView.frame;

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

代码语言:javascript
复制
 self.fileView.frame = filesFrame;
 self.fileView.frame = fullFilesFrame;    

它们位于两个不同的位置,而不是在彼此之后,fullFilesFrame被定义为:

代码语言:javascript
复制
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也相当陌生。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-10 20:57:45

我本打算把这个写在评论里,但是太长了,所以:

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

它并不总是完全直接前进,凌驾于setFrame:之上。frame属性可以直接设置,但也可以从视图的boundscenter派生,因此您可能需要查找设置视图的bounds或视图的center的东西,而不是frame

另外,如果视图有一个非标识的transform,这将使frame属性的行为非常奇怪。如果要在视图上设置非标识转换,则应该完全避免框架属性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24686006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档