1

我正在我的故事板中设计一个视图控制器。它包含顶部的导航栏和内容视图。我已将约束设置为

  • 导航栏顶部空间到顶部布局指南 = 0
  • 内容视图填充剩余空间(超级视图的前导和尾随空间= 0;超级视图的底部空间= 0,导航栏的顶部空间= 0)

因为我要显示状态栏,所以我使用顶部布局指南使导航栏显示在它的正下方。它适用于标准 UINavigationBar。
但是我有自定义导航栏:我创建了自己的继承 UINavigationBar 的类。

问题是:在界面构建器的身份检查器中为导航栏指定此自定义类时,运行应用程序时导航栏不在正确的位置。

initWitFrame在or中是否有任何要添加或修改的内容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
}
4

1 回答 1

0

你为什么打电话[self setFrame:rect];frame此时已正确设置,您不应更改它。此外,rect在导航栏的内部坐标系中。

于 2013-10-18T13:33:15.007 回答