【发布时间】:2013-04-09 05:09:17
【问题描述】:
我有一个自定义 UIView 子类,它需要位于父视图的底部。我使用以下方法设置视图的原点:
CGRect subviewFrame = subview.frame;
CGPoint newOrigin = CGPointMake(0, superview.bounds.size.height - subviewFrame.size.height);
subviewFrame.origin = newOrigin;
[subview setFrame:subviewFrame];
但是,这会将子视图 (origin.y) 直接放在父视图的视图框架之外。
如果我使用:
CGPoint newOrigin = CGPointMake(0, superview.bounds.size.height - subviewFrame.size.height * 2.0f);
我得到了我想要的结果,即位于窗口底部的子视图。
我不明白为什么必须将子视图的高度乘以 2。
如果有人能告诉我我错过了什么,将不胜感激。谢谢!
【问题讨论】:
-
用一张图片来表达你的意思怎么样。我没有立即看到您的代码有任何问题。
-
当然...对不起尺寸。谢谢!
-
我确定它与导航栏有关。与其将您的视图乘以 2,不如减去 44.0 然后减去您的子视图。而且我相信你会得到你想要的确切的东西并理解为什么。
-
是的,你是对的。我还必须为状态栏减去 20。我没有意识到我应该使用 UIScreen applicationFrame: 来获取窗口减去状态栏以及补偿导航栏。谢谢。