iOS中的自定义导航栏

时间:2015-05-29 08:50:07

标签: ios iphone uinavigationbar

是否可以在iOS的导航栏下添加拖动按钮,如下图所示:

如果是,请告诉我如何做到。

enter image description here

2 个答案:

答案 0 :(得分:3)

查看Apple Customizing UINavigationBar sample code中的 ExtendedNavBar 示例。

答案 1 :(得分:1)

实际上它可以做同样的事情;但我不建议你这样做,因为这可能会破坏即将发布的iOS版本中的应用程序..

如果您想这样做,请查看Stackoverflow上的帖子

iPhone - How set uinavigationbar height?

它可以帮助您使导航栏更高。只需创建一个自定义的UINavigationBar子类,它将覆盖sizeThatFits:并返回一个大的。

const CGFloat HeightToIncrease = 50.0f;

@implementation MyNavigationBar

- (CGSize)sizeThatFits:(CGSize)size {

    CGSize amendedSize = [super sizeThatFits:size];
    amendedSize.height += HeightToIncrease;

    return amendedSize;
}

@end

你的视图看起来像![follow] [1]

现在只需覆盖导航栏子类中的layoutSubviews,然后向上移动按钮和标题,为按钮腾出空间

喜欢以下

- (void)layoutSubviews {
    [super layoutSubviews];     

    NSArray *classNamesToReposition = @[@"UINavigationItemView", @"UINavigationButton"];

    for (UIView *view in [self subviews]) {

        if ([classNamesToReposition containsObject:NSStringFromClass([view class])]) {

            CGRect frame = [view frame];
            frame.origin.y -= HeightToIncrease;

            [view setFrame:frame];
        }
    }
}

这将为您想要放置在导航中的按钮腾出空间。