专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构

设置右边导航栏

  • 设置导航栏右边按钮

    • CZPictureWallViewController 里面定义 setupRightNav

        /// 设置右边导航栏
        - (void)setupRightNav {
            UIButton *mapButton = [UIButton buttonWithType:UIButtonTypeCustom];
            [mapButton setImage:[UIImage imageNamed:@"icon_map"] forState:UIControlStateNormal];
            [mapButton setImage:[UIImage imageNamed:@"icon_map_highlighted"] forState:UIControlStateHighlighted];
            [mapButton sizeToFit];
            [mapButton setBackgroundColor:[UIColor redColor]];
            UIBarButtonItem *mapItem = [[UIBarButtonItem alloc] initWithCustomView:mapButton];
      
            UIButton *searchButton = [UIButton buttonWithType:UIButtonTypeCustom];
            [searchButton setImage:[UIImage imageNamed:@"icon_search"] forState:UIControlStateNormal];
            [searchButton setImage:[UIImage imageNamed:@"icon_search_highlighted"] forState:UIControlStateHighlighted];
            [searchButton sizeToFit];
            [searchButton setBackgroundColor:[UIColor redColor]];
            UIBarButtonItem *searchItem = [[UIBarButtonItem alloc] initWithCustomView:searchButton];
      
            self.navigationItem.rightBarButtonItems = @[mapItem, searchItem];
        }
      
    • 抽取代码,发现 mapItemsearchItem 的创建代码非常类似,将代码抽取到 UIBarButtonItem 的分类里面

        @implementation UIBarButtonItem (Extension)
      
        /**
         *  快速创建UIBarButtonItem
         *  @param imageName 普通图片名称
         *  @return 带按钮的UIBarButtonItem
         */
        + (instancetype)itemWithImageName:(NSString *)imageName {
            NSString *highlightedImageName = [NSString stringWithFormat:@"%@_highlighted", imageName];
      
            UIButton *mapButton = [UIButton buttonWithType:UIButtonTypeCustom];
            [mapButton setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
            [mapButton setImage:[UIImage imageNamed:highlightedImageName] forState:UIControlStateHighlighted];
            [mapButton sizeToFit];
            [mapButton setBackgroundColor:[UIColor redColor]];
            return [[UIBarButtonItem alloc] initWithCustomView:mapButton];
        }
        @end
      
    • 调用抽取好的分类

        /// 设置右边导航栏
        - (void)setupRightNav {
            UIBarButtonItem *mapItem = [UIBarButtonItem itemWithImageName:@"icon_map"];
            UIBarButtonItem *searchItem = [UIBarButtonItem itemWithImageName:@"icon_search"];
      
            self.navigationItem.rightBarButtonItems = @[mapItem, searchItem];
        }
      
    • 设置2个BarButtonItem间距

        /// 设置右边导航栏
        - (void)setupRightNav {
            // 要设置2个barButtonItem的间距不要使用弹簧去弹开,会弹的很远
        //    UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
      
            UIBarButtonItem *mapItem = [UIBarButtonItem itemWithImageName:@"icon_map"];
            UIBarButtonItem *searchItem = [UIBarButtonItem itemWithImageName:@"icon_search"];
      
            self.navigationItem.rightBarButtonItems = @[mapItem, searchItem];
      
            mapItem.customView.width = 60;
            searchItem.customView.width = 60;
        }