您的位置:首页 > 移动开发 > IOS开发

iOS Segment带滑动条切换效果

2015-08-11 22:17 134 查看
#import "ViewController.h"

@interface ViewController ()

@property (nonatomic,strong) NSArray *arrTitle;

@property (nonatomic,strong) UIView *flyBar;

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

_arrTitle = [[NSArray alloc] initWithObjects:@"标题1",@"标题2",@"标题3",@"标题4", nil];

UIView *baseView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];
baseView.backgroundColor = [UIColor orangeColor];
[self.view addSubview:baseView];

for (int i=0; i<_arrTitle.count; i++) {
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(self.view.frame.size.width/_arrTitle.count*i, 20,self.view.frame.size.width/_arrTitle.count, 40)];
[btn setTitle:[_arrTitle objectAtIndex:i] forState:UIControlStateNormal];
[btn setTag:100+i];
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[baseView addSubview:btn];
}

_flyBar = [[UIView alloc] initWithFrame:CGRectMake(0, baseView.frame.size.height-2, self.view.frame.size.width/_arrTitle.count, 2)];
_flyBar.backgroundColor = [UIColor redColor];
[baseView addSubview:_flyBar];
}

- (void)btnClick:(id)sender
{
NSInteger tagNum = [sender tag];
[self updateButtonClickState:tagNum];
}

//更新按钮点击效果
- (void)updateButtonClickState:(NSInteger)tagNum
{
UIButton *currentBtn = (UIButton *)[self.view viewWithTag:tagNum];

for (int i=100; i<_arrTitle.count+100; i++) {
if (i != tagNum) {
UIButton *btn = (UIButton *)[self.view viewWithTag:i];
[btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
}
}

[UIView animateKeyframesWithDuration:0.1
delay:0.0
options:UIViewKeyframeAnimationOptionLayoutSubviews
animations:^{
_flyBar.center = CGPointMake(currentBtn.center.x, _flyBar.center.y);
}
completion:^(BOOL finished) {
[currentBtn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
}];
}

@end



          



          
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios