【发布时间】:2013-10-17 08:43:28
【问题描述】:
我正在我的故事板中设计一个视图控制器。它包含顶部的导航栏和内容视图。我已将约束设置为
- 导航栏顶部空间到顶部布局指南 = 0
- 内容视图填充剩余空间(超级视图的前导和尾随空间 = 0;超级视图的底部空间 = 0,导航栏的顶部空间 =0)
因为我要显示状态栏,所以我使用顶部布局指南让导航栏显示在它的正下方。它适用于标准 UINavigationBar。
但是我有自定义导航栏:我创建了自己的继承 UINavigationBar 的类。
问题是:在界面构建器的身份检查器中为导航栏指定此自定义类时,运行应用时导航栏不在正确的位置。
在initWitFrame 或initWithCoder 中是否有任何需要添加或修改的内容,或者还有其他事情要做,所以我的自定义导航栏将遵循我的故事板的约束。
编辑 - 添加源代码
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// additional setup
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:(NSCoder *)aDecoder];
if (self) {
// same setup than initWithFrame:
}
return self;
}
- (void)drawRect:(CGRect)rect
{
//[self setFrame:rect]; navigation bar is not at the right place if uncommented
}
【问题讨论】:
-
如果发现函数
drawRect:被自动触发,将我的导航栏原点设置为(0,0)。如果您不覆盖它,我将失去我的栏的一些自定义设置,尤其是背景颜色。有什么线索吗? -
当您不覆盖
drawRect:时,它是否有效?你能显示你的自定义UINavigationBar的来源吗? -
是的,它在不覆盖
drawRect:时工作。但我失去了一些定制。我为来源编辑我的帖子。
标签: ios storyboard uinavigationbar autolayout