首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 11 UINavigationBar类别问题

iOS 11 UINavigationBar类别问题
EN

Stack Overflow用户
提问于 2018-02-22 12:56:37
回答 1查看 180关注 0票数 0

当我覆盖UINavigationbar的layoutSubviews时,所有的子视图都将被删除。我正在尝试设置自定义导航栏高度。它工作得很好,但在iOS 11中取得了突破。它是一个自定义类别。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-26 16:29:30

我已经用setFrame:和layoutSubviews方法创建了UINavigationBar的一个子类。您需要在Storyboard中将子类设置为NavigationController的NavigationBar。

代码语言:javascript
复制
CGFloat const NavBarHeight = 88.0;

- (CGSize)sizeThatFits:(CGSize)size {
    return [self getNavBarSize];
}

- (void)setFrame:(CGRect)frame {
    frame.size.height = NavBarHeight;

    for (UIView *subview in self.subviews) {
        if ([NSStringFromClass([subview class])  containsString:@"UINavigationBarContentView"]) {
            subview.frame = CGRectMake(0, 20, self.frame.size.width, NavBarHeight-30);
        }
        [subview sizeToFit];
    }
    [super setFrame:frame];

}

- (void)layoutSubviews {
    [super layoutSubviews];
    for (UIView *subview in self.subviews) {
        if ([NSStringFromClass([subview class]) containsString:@"BarBackground"]) {
            subview.frame = CGRectMake(0, -20, self.frame.size.width, NavBarHeight+20);
            [subview sizeToFit];
        }else if ([NSStringFromClass([subview class])  containsString:@"UINavigationBarContentView"]) {
            subview.frame = CGRectMake(0, 20, self.frame.size.width, NavBarHeight-30);
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48919914

复制
相关文章

相似问题

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