1. 程式人生 > >ios 導航欄(自己定義和使用系統方式)

ios 導航欄(自己定義和使用系統方式)

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 導航欄(自己定義和使用系統方式)