SegmentControl的基本设置

  • 额外之谈,关于自定义NavigationController的NavigationBar
    • + initilize 中统一实现
    • 代码如下
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;

你可能感兴趣的:(SegmentControl的基本设置)