ios 導航欄(自己定義和使用系統方式)
阿新 • • 發佈:2017-05-20
dividing lac 添加 nav mod anim objc cgrect side
自己定義:
系統方式:
//1.設置導航欄背景圖片 [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = [[UIImage alloc]init]; [[self navigationController] setNavigationBarHidden:NO animated:YES]; self.navigationController.navigationBar.backgroundColor = [[UIColor alloc] initWithRed:248/255.0 green:248/255.0 blue:248/255.0 alpha:1.0]; //2.導航面板左邊的取消按鈕 UIButton* cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; if(cancelButton != nil) { [cancelButton setTitle:POST_CANCEL_BUTTON forState: UIControlStateNormal]; [cancelButton setFrame:CGRectMake(0, 0, WIDTH_SCREEN/5.0, 44)]; [cancelButton setTitleColor:[[UIColor alloc] initWithRed:0 green:158/255.0 blue:150/255.0 alpha:1.0]forState:UIControlStateNormal]; cancelButton.titleLabel.font = [UIFont systemFontOfSize: 16.0]; cancelButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; [cancelButton addTarget:self action:@selector(cancelButtonEventTouchUpInside) forControlEvents :UIControlEventTouchUpInside]; UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:cancelButton]; if(leftItem != nil) { self.navigationItem.leftBarButtonItem = leftItem; } } //3.導航面板右邊的公布按鈕 UIButton* postButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; if (postButton != nil) { [postButton setFrame:CGRectMake(0, 0, WIDTH_SCREEN/5.0, 44)]; [postButton setTitle:@"公布" forState:UIControlStateNormal]; [postButton setTitleColor:[[UIColor alloc] initWithRed:0 green:158/255.0 blue:150/255.0 alpha:1.0]forState:UIControlStateNormal]; postButton.titleLabel.font = [UIFont systemFontOfSize: 16.0]; postButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight; [postButton addTarget:self action:@selector(postButtonEventTouchUpInside) forControlEvents :UIControlEventTouchUpInside]; UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithCustomView:postButton]; if(rightItem != nil) { self.navigationItem.rightBarButtonItem = rightItem; } } //4.導航面板中部文字 UILabel* navigationLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 44)]; if (navigationLabel != nil) { [navigationLabel setTextColor:[UIColor blackColor]]; navigationLabel.text = POST_NAVIGATION_TITLE; [navigationLabel setTextAlignment:NSTextAlignmentCenter]; navigationLabel.font = [UIFont systemFontOfSize:18.0]; self.navigationItem.titleView = navigationLabel; } //5.導航以下的一條切割線 UIView* line = [[UIView alloc]initWithFrame:CGRectMake(0, 20 + 44,WIDTH_SCREEN, 1)]; if (line != nil) { line.backgroundColor = [[UIColor alloc] initWithRed:221/255.0 green:221/255.0 blue:221/255.0 alpha:1.0]; [self.view addSubview:line]; }
自己定義:
//1.創建導航欄視圖 UIView *navView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, WIDTH_SCREEN, 65)]; if (navView != nil)//當導航視圖沒有載入成功的時候推出該方法 { //1.為導航視圖設置背景 navView.backgroundColor = [UIColor colorWithRed:248 / 255.0 green:248 / 255.0 blue:248 / 255.0 alpha:1]; [[self navigationController] setNavigationBarHidden:YES animated:YES]; //2.導航面板左邊的取消按鈕 UIButton* leftButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; if (leftButton != nil) { leftButton.frame = CGRectMake(15, 20, 65, 44); [leftButton setTitle:POST_CANCEL_BUTTON forState: UIControlStateNormal]; [leftButton setTitleColor:[[UIColor alloc] initWithRed:0 green:158/255.0 blue:150/255.0 alpha:1.0]forState:UIControlStateNormal]; leftButton.titleLabel.font = [UIFont systemFontOfSize: 16.0]; leftButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; [leftButton addTarget:self action:@selector(cancelButtonEventTouchUpInside) forControlEvents :UIControlEventTouchUpInside]; [navView addSubview:leftButton]; } //3.導航面板右邊的公布按鈕 UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; if (rightButton != nil) { [rightButton setFrame:CGRectMake(WIDTH_SCREEN - 80, 20, 65, 44)]; [rightButton setTitle:@"公布" forState:UIControlStateNormal]; [rightButton setTitleColor:[[UIColor alloc] initWithRed:0 green:158/255.0 blue:150/255.0 alpha:1.0]forState:UIControlStateNormal]; rightButton.titleLabel.font = [UIFont systemFontOfSize: 16.0]; rightButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight; [rightButton addTarget:self action:@selector(postButtonEventTouchUpInside) forControlEvents :UIControlEventTouchUpInside]; [navView addSubview:rightButton]; } //4.導航面板中部文字 UILabel* navTitle = [[UILabel alloc] initWithFrame:CGRectMake(80, 20, WIDTH_SCREEN - 80 - 80, 44)]; if (navTitle != nil) { [navTitle setTextColor:[UIColor blackColor]]; navTitle.text = POST_NAVIGATION_TITLE; [navTitle setTextAlignment:NSTextAlignmentCenter]; navTitle.font = [UIFont systemFontOfSize:18.0]; [navView addSubview:navTitle]; } //5.在導航視圖底加入切割線 UIView *navDividingLine = [[UIView alloc] init]; if (navDividingLine != nil) { navDividingLine.frame = CGRectMake(0, 20 + 44, WIDTH_SCREEN, 1); navDividingLine.backgroundColor = [UIColor colorWithRed:221 / 255.0 green:221 / 255.0 blue:221 / 255.0 alpha:1]; [navView addSubview:navDividingLine]; } //6.往view添加導航欄 [self.view addSubview:navView]; }
ios 導航欄(自己定義和使用系統方式)