自定义UINavigationBar,自定义高度为中心

时间:2014-08-22 21:29:56

标签: ios objective-c cocoa-touch uinavigationbar uistoryboard

我已经审核了几乎所有与自定义NavigationBar相关的操作系统问题,但无法找到有用的解决方案。请看下面的截图, enter image description here

红色部分表示navigationBar中心的图标(小图片)。

请提出一些解决方案。提前致谢。

编辑:我想在应用中为所有UINavigationBar实施该功能。我的意思是每个视图

注意:我不知道是谁在投票我的问题,但我想向这些人提问。你对我的问题有什么解决方案吗?如果没有,那你为什么要投票我的问题呢?我不会以这种方式获得帮助。这完全错了。

2 个答案:

答案 0 :(得分:2)

您可以继承UINavigationBar。

#import "VSNavigationBar.h"


@interface VSNavigationBar ()
@property (nonatomic, weak) UIView *noseView;

@end


@implementation VSNavigationBar

-(void)layoutSubviews
{
    [super layoutSubviews];
    static CGFloat width = 80;
    if (!_noseView) {

        UIView *noseView = [[UIView alloc] initWithFrame:CGRectMake(self.bounds.size.width / 2 - width / 2, 0, width, width)];
        self.noseView = noseView;

        self.noseView.backgroundColor = self.barTintColor;
        self.noseView.layer.cornerRadius = self.noseView.frame.size.width / 2;

        [self addSubview:_noseView];
    }
    _noseView.frame = CGRectMake(self.bounds.size.width / 2 - width / 2, 0, width, width);
}

@end

在故事板中,您将选择NavigationController场景,在左侧的树视图中选择导航栏,在右侧选择身份检查器并将类更改为子类。

screenshot

答案 1 :(得分:0)

您需要创建一个看起来像您提供的图像中心部分的图像并说 -

UIImage *image = [UIImage imageNamed: @"logo.png"];
UIImageView *imageview = [[UIImageView alloc] initWithImage: image];
self.navigationItem.titleView = image view;

如果您尝试获得类似于您提供的图像底部的圆形效果,那么您需要拥有与上面相同的图像并将其设置为导航栏的背景图像 -

[navigationBar setBackgroundImage:[UIImage imageNamed: @"yourImage"] forBarMetrics:UIBarMetricsDefault];