博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS开发实战:UISegmentedControl分段控制器
阅读量:2222 次
发布时间:2019-05-08

本文共 1730 字,大约阅读时间需要 5 分钟。

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

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

1,打开Xcode,创建名为 UISegmentedControl 的工程

如何创建工程:

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];}

图片添加请查看:

中”为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分页控制器

你可能感兴趣的文章
Logistic regression 为什么用 sigmoid ?
查看>>
Logistic Regression 为什么用极大似然函数
查看>>
SVM 的核函数选择和调参
查看>>
LightGBM 如何调参
查看>>
用 TensorFlow.js 在浏览器中训练神经网络
查看>>
cs230 深度学习 Lecture 2 编程作业: Logistic Regression with a Neural Network mindset
查看>>
梯度消失问题与如何选择激活函数
查看>>
为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例
查看>>
为什么在优化算法中使用指数加权平均
查看>>
什么是 Q-learning
查看>>
用一个小游戏入门深度强化学习
查看>>
5 分钟入门 Google 最强NLP模型:BERT
查看>>
初探Java设计模式4:一文带你掌握JDK中的设计模式
查看>>
初探Java设计模式5:一文了解Spring涉及到的9种设计模式
查看>>
Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
查看>>
Java集合详解2:一文读懂Queue和LinkedList
查看>>
Java集合详解3:一文读懂Iterator,fail-fast机制与比较器
查看>>
Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
查看>>
Java集合详解5:深入理解LinkedHashMap和LRU缓存
查看>>
Java集合详解6:这次,从头到尾带你解读Java中的红黑树
查看>>