[IOS]今天开始学UI---UISegmentedControl&&UIStepper

UISegmentControl是分段控件:拥有多个类似Button

UISegmentControlStyle自从 7.0 就已废弃 设置也没有任何实际效果

首先看他长什么样


貌似看起来很coooool这个View 简约可以这么形容他


图解分析该View属性:





该View提供的初始化函数为 

- (instancetype)initWithItems:(NSArray *)items; // items can be NSStrings or UIImages. control is automatically sized to fit content
items 可以是NSString UIImage
NSArray *arr = @[@"item1",@"item2",@"item3"];
    _segmentControl1 = [[UISegmentedControl alloc] initWithItems:arr];


当然开始不设置后期也可以直接设置某个Segment的title 或者image

</pre><pre name="code" class="objc">
- (void)setTitle:(NSString *)title forSegmentAtIndex:(NSUInteger)segment;  
- (void)setImage:(UIImage *)image forSegmentAtIndex:(NSUInteger)segment; 

对于某个Segment 宽度也是可以设置的 如果不进行设置 则由该View自己进行调整

- (void)setWidth:(CGFloat)width forSegmentAtIndex:(NSUInteger)segment; 


要实现上图的样式

实现代码如下

@interface ViewController ()
@property (nonatomic,strong) UISegmentedControl *segmentControl1;
@property (nonatomic,strong) UISegmentedControl *segmentControl2;
@property (nonatomic,strong) UISegmentedControl *segmentControl3;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    [self configurationSegment1];
    [self configurationSegment2];
    [self configurationSegment3];
}

-(void)configurationSegment1{
    NSArray *arr = @[@"item1",@"item2",@"item3"];
    _segmentControl1 = [[UISegmentedControl alloc] initWithItems:arr];
    _segmentControl1.frame = CGRectMake(0, 0, 300, 30);
    CGPoint center = self.view.center;
    [_segmentControl1 setEnabled:NO forSegmentAtIndex:2];
    [_segmentControl1 setSelectedSegmentIndex:0];
    _segmentControl1.center = CGPointMake(center.x, center.y-100);
    [self.view addSubview:_segmentControl1];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.frame = CGRectMake(0, 0, 80, 30);
    button.center = CGPointMake(center.x-40, center.y-60);
    [button setTitle:@"Remove" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(remove:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];

    UIButton *button2 = [UIButton buttonWithType:UIButtonTypeSystem];
    button2.frame = CGRectMake(0, 0, 80, 30);
    button2.center = CGPointMake(center.x+40, center.y-60);
    [button2 setTitle:@"Add" forState:UIControlStateNormal];
    [button2 addTarget:self action:@selector(add:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button2];
}

-(void)configurationSegment2{
    NSArray *arr = @[@"item1",@"item2",@"item3"];
    _segmentControl2 = [[UISegmentedControl alloc] initWithItems:arr];
    _segmentControl2.frame = CGRectMake(0, 0, 300, 30);
    CGPoint center = self.view.center;
    _segmentControl2.center = CGPointMake(center.x, center.y);
    _segmentControl2.tintColor = [UIColor redColor];
    [self.view addSubview:_segmentControl2];
}

-(void)configurationSegment3{
    NSArray *arr = @[[UIImage imageNamed:@"checkmark_icon.png"],[UIImage imageNamed:@"tools_icon.png"],[UIImage imageNamed:@"search_icon.png"]];
    _segmentControl3 = [[UISegmentedControl alloc] initWithItems:arr];
    _segmentControl3.frame = CGRectMake(0, 0, 300, 30);
    CGPoint center = self.view.center;
    _segmentControl3.center = CGPointMake(center.x, center.y+100);
    [self.view addSubview:_segmentControl3];
    [_segmentControl3 setBackgroundImage:[UIImage imageNamed:@"stepper_and_segment_background.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    [_segmentControl3 setDividerImage:[UIImage imageNamed:@"stepper_and_segment_segment_divider.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
}


- (void)remove:(UIButton *)sender{
    [_segmentControl1 removeSegmentAtIndex:_segmentControl1.selectedSegmentIndex animated:YES];
    [_segmentControl1 setSelectedSegmentIndex:0];
}

- (void)add:(UIButton *)sender{
    [_segmentControl1 insertSegmentWithTitle:@"added" atIndex:_segmentControl1.numberOfSegments>0?_segmentControl1.numberOfSegments-1:0 animated:YES];
}
@end


移除某个 或者全部segment用

- (void)removeSegmentAtIndex:(NSUInteger)segment animated:(BOOL)animated;
- (void)removeAllSegments;


添加一个segment用

- (void)insertSegmentWithTitle:(NSString *)title atIndex:(NSUInteger)segment animated:(BOOL)animated; // insert before segment number. 0..#segments. value pinned
- (void)insertSegmentWithImage:(UIImage *)image  atIndex:(NSUInteger)segment animated:(BOOL)animated;

如果这里给的index值 越界则会报错


如果需要设置选中某个segment 直接设置selectedSegmentIndex该属性的值就可
某个segment处于不可选中状态

- (void)setEnabled:(BOOL)enabled forSegmentAtIndex:(NSUInteger)segment; 


这里附上以上的四张图片

checkmark_icon.png


search_icon.png


tools_icon.png


stepper_and_segment_background.png


stepper_and_segment_segment_divider.png

<=====其实就在这里  只是看不到 注意左上缺角






UIStepper完全可以看成简化过的UISegmentControl

属性也几乎可以照搬  除了默认只有两个按钮外



that's all

thx




Everything you see on Screen is UIView.




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值