美文网首页iOS常用功能和UI效果的实现
iOS用分段控制器UISegmentedControl来写注册/

iOS用分段控制器UISegmentedControl来写注册/

作者: 西叶lv | 来源:发表于2017-05-30 10:52 被阅读56次

  我们在写注册界面时,写注册和密码找回按钮时,且注册和密码找回按钮在一起时,如下图所示:

Simulator Screen Shot 2017年5月30日 上午10.43.06.png

  我们常常需要两个按钮来实现,但是,这样适配起来就不方便了,控件越多越不好适配,所以最好用一个控件来完成这个效果。
  分段控制器UISegmentedControl可以实现该效果,代码如下:

UISegmentedControl *SCtrl = [[UISegmentedControl alloc] initWithItems:@[@"注册",@"找回密码"]];// 设置分段标题  
SCtrl.frame = CGRectMake(CGRectGetWidth(self.view.frame)/3, CGRectGetHeight(self.view.frame) - 40, CGRectGetWidth(self.view.frame)/3 , 20);// 设置分段控制器的位置和大小
SCtrl.tintColor = [UIColor clearColor];// 将分段控制器的tintColor(包括边框,分段间隔,等等设置为无色)
[SCtrl setDividerImage:[UIImage imageNamed:@"line"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];// 设置标签之间分隔线图案(让设计给个中间的竖线图)
[SCtrl setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor colorWithRed:163/255.f green:163/255.f blue:163/255.f alpha:1], NSFontAttributeName:[UIFont systemFontOfSize:16.0]} forState:UIControlStateNormal];// 设置标题颜色和字号等等
SCtrl.apportionsSegmentWidthsByContent = YES;// 根据内容定制宽度(根据标题内容自设分段宽度)
[SCtrl addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged];// 添加点击事件,点击事件为UIControlEventValueChanged,不是UIControlEventTouchUpInside,否则会无效,这里要注意
SCtrl.momentary = YES;// 点击后恢复原状态(默认是NO,为NO时,某个分段点击后就会一直处于选中状态,在点击这个分段就会没有效果,设置为YES后,点击后不会处于选中状态,一个分段可以联系点击)
[self.view addSubview:SCtrl];


#pragma mark- 分段控制器点击事件
- (void)change:(UISegmentedControl *)sender {
    if (sender.selectedSegmentIndex == 0) {
        
        NSLog(@"弹出注册界面");
        
    }else if (sender.selectedSegmentIndex == 1) {
        
        NSLog(@"弹出密码找回界面");
        
    }
    
}

  该段代码可以实现如上图所示效果,这样一个控件就可以实现注册/密码找回效果,且适配时只需适配分段控制器。

参考
1.iOS-UIKit框架学习—UISegmentedControl
2.UISegmentedControl属性
3.iOS开发之分段控制器

  不知道大家有没有更好的方法来实现这个效果……欢迎留言

相关文章

网友评论

    本文标题:iOS用分段控制器UISegmentedControl来写注册/

    本文链接:https://www.haomeiwen.com/subject/gcfrfxtx.html