- 额外之谈,关于自定义NavigationController的NavigationBar
if (self == [LXLArenaNavController class]) {
// 设置导航条背景图片
UINavigationBar *bar = [UINavigationBar appearanceWhenContainedIn:self, nil];
UIImage *image = [UIImage imageNamed:@"NLArenaNavBar64"];
// 图片拉伸 ,当然可以直接在图片上进行设置
image =[image stretchableImageWithLeftCapWidth:image.size.width * 0.5 topCapHeight:image.size.height * 0.5];
// 设置导航条背景图片 ,样式必须为UIBarMetriDefault
// 只有UIBarMetriDefault的样式,导航控制器的子控制器view的尺寸才不包括导航条的那部分
[bar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}
- 控制器view的底层实现。
- 先调用
- loadView
方法,进行设置,当然也可以直接改变样式。
- 再调用
- viewDidLoad
方法,再次对view进行设置,相当与对控制器view
进行二次改造,但是会覆盖掉前一次
- 如果外界在进行属性设置,则再进行设置。
- 代码实现 用
- loadView
直接修改控制器view为imageView
// 自定义控制器的view
- (void)loadView
{
UIImageView *bgV = [[UIImageView alloc] initWithFrame:XMGKeyWindow.bounds];
bgV.image = [UIImage imageNamed:@"NLArenaBackground"];
// 一定要运行用户交互
bgV.userInteractionEnabled = YES;
self.view = bgV;
}
- UISegmentControl
-
- (instancetype)initWithItems:(NSArray *)items;
初始化方法,items:传入选项卡的选项
-
- (void)setImage:(UIImage *)image forSegmentAtIndex:(NSUInteger)segment;
设置某个选项的图片
-
- (void)setContentOffset:(CGSize)offset forSegmentAtIndex:(NSUInteger)segment;
设置选项卡内容的偏移量
-
@property(nonatomic) NSInteger selectedSegmentIndex;
设置选中的选项卡
-
@property(nonatomic,retain) UIColor *tintColor;
设置选项卡的主题颜色,(主要为字体,以及边框颜色)
-
- (void)setBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics
设置背景图片,对应状态,显示对应的背景图片
-
- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state
设置字体(富文本) 对应状态的字体。
- 代码实现如下
// 设置导航条的titleView内容
UISegmentedControl *segContontrol = [[UISegmentedControl alloc] initWithItems:@[@"足球",@"篮球"]];
// 设置UISegmentedControl选中的图片
[segContontrol setBackgroundImage:[UIImage imageNamed:@"CPArenaSegmentSelectedBG"] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
// 正常的图片
[segContontrol setBackgroundImage:[UIImage imageNamed:@"CPArenaSegmentBG"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[segContontrol setTintColor:[UIColor colorWithRed:0 green:142/255.0 blue:143/255.0 alpha:1]];
// 设置选中的文字颜色
[segContontrol setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]} forState:UIControlStateSelected];
segContontrol.selectedSegmentIndex = 0;
self.navigationItem.titleView = segContontrol;