IOS开发实战:UISegmentedControl分段控制器

一,创建UISegmentedControl分段控制器项目

UISegmentedControl 用于管理和实现一组内容的切换逻辑,常用于导航栏的标题视图中

1,打开Xcode,创建名为 UISegmentedControl 的工程
如何创建工程:Xcode创建HelloWorld项目

2,在ViewController.m的viewDidLoad方法中添加如下代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    // 使用带Item参数的构造方法初始化UISegmentedontrol对象,数组决定了按钮数量和标题
    UISegmentedControl * seg = [[UISegmentedControl alloc]initWithItems:@[@"one", @"", @"three", @"four"]];
    // 设置控制在界面上的位置
    seg.frame = CGRectMake(20, 100, 280, 30);
    // 设置指定按钮图案,从0开始
    [seg setImage:[[UIImage imageNamed:@"image"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] 
         forSegmentAtIndex:1];
    // 设置按钮内容的位置偏移
    [seg setContentOffset:CGSizeMake(10, 10) forSegmentAtIndex:0];
    // 默认假-切换按钮模式:用户点击一个按钮后,此按钮一直保持选中状态,直到用户切换至另一个按钮
    // 设置为真-触发按钮模式:用户手指离开屏幕后,按钮不再保持选中状态
    seg.momentary = NO;
    // 将控件添加到当前视图上
    [self.view addSubview:seg];
}

图片添加请查看:
IOS开发实战:UIButton按钮控件 中”为UIButton添加背景和内容图片”部分

运行程序:

这里写图片描述


二,对UISegmentedControl中的按钮进行增,删,改操作

UISegmentedControl控件初始化后,可以进行动态的添加删除和修改操作
// 在指定位置插入一个新的标题按钮
// 参数1:设置标题
// 参数2:设置插入的位置
// 参数3:是否带动画效果
// 与此方法对应还有一个插入图片按钮的方法
[seg insertSegmentWithTitle:@"new" atIndex:2 animated:YES];
// 删除一个指定按钮
[seg removeSegmentAtIndex:1 animated:YES];
// 重新设置按钮标题
// 与此方法对应还有一个重新设置图片的方法
[seg setTitle:@"replace" forSegmentAtIndex:1];
// 移除所有按钮
[seg removeAllSegments]

三,UISegmentedControl中按钮宽度的自适应

UISegmentedControl中的按钮宽度默认为平均分配,若按钮标题超长自动截断
开发者可以手动对控件中每个按钮的宽度进行设置,便于按钮宽度与文字相适应
//设置指定按钮的宽度
[seg setWidth:130 forSegmentAtIndex:3]
但是,这种写法有一个致命的缺点
因为,可能开发者并不知道按钮标题文字所占的宽度,使用强制计算很麻烦
所以,UISegmentedControl还提供了宽度自适应属性
能够让UISegmentedControl自动计算按钮需要的宽度,进行宽度的自适应
// 开启UISegmentedControl按钮宽度的自适应
seg.apportionsSegmentWidthsByContent = YES;

四,UISegmentedControl触发方法

UISegmentedControl的触发方法也是通过addTarget方法设置的,与UIPageControl一致

IOS开发实战:UIPageControl分页控制器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
大神,大哥,帅哥,美女们,如果大家觉得好的,麻烦再github上面点个赞,谢谢大家,点赞的都是大好人啊 https://github.com/MJCIOS/MJCSegmentInterface github上面项目持续更新,有最新版本,新的功能,上面都会第一时间更新,麻烦大家进入github上面查看,谢谢...也谢谢审核官早点审核成功..也希望cocoachina增加一个编辑功能,这样我可以修改之前上传的代码了,要不然每次都要上传新的代码,,然后再删除以前的代码,实在是太麻烦了,谢谢... ☆☆☆ “MJCSegmentInterface分段控制器” ☆☆☆ 一款简单的类似百思不得姐主页导航栏下方的那个分段界面的控件,类似王者荣耀助手的聊天模块的导航栏下方的分段界面控件等等,简单的说,这是一款分段界面选择器 ☆☆ 如何导入使用框架方法 ☆☆ 可以打开 https://github.com/MJCIOS/MJCSegmentInterface 将项目下载下来,将MJCSlideInterface文件夹放入自己的项目中 项目已支持pod导入,pod 'MJCSegmentInterface',如果没法导入,可以先[pod repo update]更新整个.cocoapods下的所有库... 有啥问题联系我QQ292251588,希望大神们和我多多交流,和大神们一起学习..... 技术交流群612845323,希望和大神们一起学习多多交流,互相学习些技术..... 希望大家多多支持,如果觉得好用,多多帮忙推荐,谢谢大家,谢谢大神,有啥问题,可以提给我... ☆☆ MJCSegmentInterface分段控制器创建(几行代码设置即可使用) ☆☆ NSArray *titlesArr = @[@"荣耀",@"联盟",@"DNF",@"CF",@"飞车",@"炫舞",@"天涯明月刀"]; MJCSegmentFaceControl *segmentsface = [[MJCSegmentFaceControl alloc]init]; segmentsface.frame = CGRectMake(0,64, MJCScreenWidth,MJCScreenHeight); [lala intoTitlesArray:titlesArr hostController:self]; [self.view addSubview:segmentsface]; MJCTestViewController *vc1 = [[MJCTestViewController alloc]init]; MJCTestTableViewController *vc2 = [[MJCTestTableViewController alloc]init]; MJCTestViewController1 *vc3 = [[MJCTestViewController1 alloc]init]; MJCTestViewController *vc4 = [[MJCTestViewController alloc]init]; MJCTestViewController *vc5 = [[MJCTestViewController alloc]init]; NSArray *vcarrr = @[vc1,vc2,vc3,vc4,vc5]; [lala intoChildControllerArray:vcarrr]; 可自行修改各个属性,具体属性接口可进入项目查看.. /** 添加控制器的方法(添加控制器按照控制器添加的先后顺序与按钮对应的 */ -(void)intoChildControllerArray:(NSArray *)childControllerArray; /** 添加标题栏的方法 */ -(void)intoTitlesArray:(NSArray *)titlesArray hostController:(UIViewController *)hostController;

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BraveWangDev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值