IOS 自定义导航栏

我们自己新建一个View,来自定义导航栏,如下代码:

#import <UIKit/UIKit.h>

@interface CustomNavigation : UIView

typedef enum {

customEventClickLBtn1 ,//点击了最左边的按钮

customEventClickRBtn1 , //最右边的按钮

customEventClickLBtn2 ,//点击了左边第二个按钮

customEventClickRBtn2 //点击了右边最靠左的按钮

}CustomEventType;

typedef void(^CustomBlock)(NSInteger indx);

/**

*  设置RootCtrl的Navigation左边按钮

*/

- (void)customLeftUserHeadWithItem:(UINavigationItem *)items block:(CustomBlock)block;

/**

*  设置Navigation的title颜色

*

*  @param navi 传递self.navigationcontroller过来即可

*/

- (void)customNavigationTitle:(UINavigationController *)navi;

/**

*  设置Navigation的返回按钮为通用的白色返回按钮

*

*  @param navi  传递self.navigationitem

*  @param block 点击了返回按钮时需要使用到的

*/

- (void)customNavigationBack:(UINavigationItem *)navi block:(CustomBlock)block;

@end

------------------------------.m文件--------------------------------------------

@implementation CustomNavigation{

CustomBlock leftBlock;

CustomBlock rightBlock;

UINavigationItem *itme;

UIButton *leftbtn;

}

- (void)customLeftUserHeadWithItem:(UINavigationItem *)items block:(CustomBlock)block{

leftBlock = block;

itme = items;

UIImageView *imgv = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];

[imgv setImageWithURL:[NSURL URLWithString:[UserModel shareModel].userHead] placeholderImage:IMAGENAMED(@"iconDefultHead")];

leftbtn = [UIButton buttonWithType:UIButtonTypeCustom];

[leftbtn setFrame:CGRectMake(0, 0, 80, 40)];

[leftbtn addSubview:imgv];

[ViewFastory filletView:imgv];

[leftbtn addTarget:self action:@selector(clickLeftButton) forControlEvents:UIControlEventTouchUpInside];

itme.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:leftbtn];

[leftbtn setUserInteractionEnabled:YES];

}

- (void)customNavigationTitle:(UINavigationController *)navi{

[navi.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],NSForegroundColorAttributeName,[UIFont fontWithName:SYSTEMFONTName size:NAV_FONTSize],NSFontAttributeName,nil]];

[navi.navigationBar setBackgroundImage:IMAGENAMED(@"navigationBg") forBarMetrics:UIBarMetricsDefault];

}

- (void)customNavigationBack:(UINavigationItem *)navi block:(CustomBlock)block{

[self customLeftBtnWithNav:navi imageName:@"iconNavigationBack" block:block];

}

- (void)clickRightButton{

rightBlock(customEventClickRBtn1);

}

- (void)clickMoreButton{

rightBlock(customEventClickRBtn2);

}

- (void)clickLeftButton{

leftBlock(customEventClickLBtn1);

}

- (void)clickTabButton{

leftBlock(customEventClickLBtn2);

}

接下来就是在你需要写导航栏的界面里去写了:

@implementation DetailsTaskCtrl{

CustomNavigation *customNav;//一定要在这里定义为属性哦,不然,你写的按钮不会起作用的

}

- (void)loadNav{

customNav = [CustomNavigation new];

[customNav customNavigationBack:self.navigationItem block:^(NSInteger index){

if(index == customEventClickLBtn1){

[self.navigationController popViewControllerAnimated:YES];

}

}];

}

今天又被深深的打击了,来公司一个月了,到现在都还没有给我签一份正式的合同,要求的工资也只是个应届生的工资而已啊.但人事部经理说,公司的档案里没有我.今天有个技术讨论会,安卓、IOS的都去了,

我也是IOS的啊,为啥还特意说了下我不用去了.是不是在你没能力之前,别人的眼都入不了?

时间: 2024-12-28 02:43:21

IOS 自定义导航栏的相关文章

IOS 自定义导航栏标题和返回按钮标题

IOS中自定义导航栏标题: UILabel *titleText = [[UILabel alloc] initWithFrame: CGRectMake(160, 0, 120, 50)]; titleText.backgroundColor = [UIColor clearColor]; titleText.textColor=[UIColor whiteColor]; [titleText setFont:[UIFont systemFontOfSize:17.0]]; [titleTex

iOS 自定义导航栏笔记

一.UINavigationBar的结构 导航栏几乎是每个页面都会碰到的问题,一般两种处理方式:1.隐藏掉不显示 2.自定义 1. 添加导航栏 TestViewController * mainVC = [[TestViewController alloc] init]; UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:mainVC]; self.window.ro

ios 自定义导航栏和分割线

自定义导航栏: // CustomNaviBarView.h #import <UIKit/UIKit.h> @interface CustomNaviBarView : UIView { @private /** * 左侧按钮 */ UIButton* _leftButton; /** * 右侧按钮 */ UIButton* _rightButton; /** * 中部标签 */ UILabel* _navTitle; } @property(nonatomic,strong)UIButto

ios 自定义导航栏,开启侧滑返回手势

自定义一个常用ListViewController .h文件 1 #import <UIKit/UIKit.h> 2 3 @interface ListViewController : UIViewController 4 5 -(void)diquButtonClick; 6 7 @end .m文件 1 // 2 // ListViewController.m 3 // OuLianWang 4 // 5 // Created by allenariel on 15/6/24. 6 // C

IOS 自定义导航栏背景

//- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR; -(id)init { self=[super init]; if(self) { UINavigationBar *navBar=[self navigationBar]; if([navBar respondsTo

iOS 自定义导航栏的返回按钮

UIBarButtonItem * item  =    [UIBarButtonItem appearance]; UIImage* image = [UIImage imageNamed:@"back_icon"]; [item setBackButtonBackgroundImage:[image resizableImageWithCapInsets:UIEdgeInsetsMake(0, image.size.width, 0, 0)] forState:UIControlS

iOS 为导航栏自定义按钮图案Button Image 运行出来的颜色与原本颜色不一样 -解决方案

为相机制作闪光灯,在导航栏自定义了"闪光"图案,希望点击时变换图片,但是一直没有改变,原来是因为设置了Global Tint的颜色,所以系统会自动把图片的颜色改为Global Tint的颜色. 解决方案,设置图片时,添加:imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal 源码: - (void) setFlashOn:(BOOL)isOn { if (self.captureDevice.hasFlash) { UIIm

一些关于iOS系统导航栏与自定义导航栏的事情

关于系统导航栏是真的让人又爱又恨,爱的是苹果本身对这个控件的封装已经是很完美了,包括内存.美化.渐变动画等等,一般来说,基本上所有需求都可以满足的.但是你要知道什么东西到了中国,就会发生翻天覆地的变化,例如后台的数据并发.在国内奇葩的产品设计之下,导航栏也是面目全非,反正我看了比较著名的APP,发现他们的导航栏基本都是自定义,其中牵扯最大的问题就是导航栏自身的隐藏.颜色渐变. 其实通过APP运行时,你可以看到系统NavigationBar的分层.一个navigationBar是分很多层的,并非我

实际iOS编程中遇到的自定义导航栏按钮,导致手势返回失效的解决方法

1\在实际编程过程中往往需要自定义导航栏上面的按钮,也就用: - (instancetype)initWithCustomView:(UIView *)customView; 但用了这个方法后可能会导致iOS7,8的手势返回失效,解决方法就是在自定义的导航栏的viewDidLoad方法中添加如下代码 注意:只有用系统的导航栏,或者继承于系统的导航栏才可以用Push方法,并且自带返回手势. - (void)viewDidLoad { [super viewDidLoad]; __weak type