iOS:分段控件UISegmentedControl的详细使用
分段控件:UISegmentedControl
typedef NS_ENUM(NSInteger, UISegmentedControlStyle) {
UISegmentedControlStylePlain, // 有灰色的大白按钮,适合偏好设置单元
UISegmentedControlStyleBordered, // 黑色边界的大白按钮,适用于表格单元
UISegmentedControlStyleBar, // 小按钮,适合导航栏
UISegmentedControlStyleBezeled, //斜角/斜边按钮
}
enum {
UISegmentedControlNoSegment = -1 // 不进行分段
};
typedef NS_ENUM(NSInteger, UISegmentedControlSegment) {
UISegmentedControlSegmentAny = 0, //所有标签都受影响
UISegmentedControlSegmentLeft = 1, //只有左边部分受到影响
UISegmentedControlSegmentCenter = 2, //只有中间部分受到影响
UISegmentedControlSegmentRight = 3, //只有右边部分受到影响
UISegmentedControlSegmentAlone = 4, //在只有一个标签时生效
};
属性:
@property(nonatomic) UISegmentedControlStyle segmentedControlStyle; //分段控件类型
@property(nonatomic,getter=isMomentary) BOOL momentary; //是否保持选中状态
@property(nonatomic,readonly) NSUInteger numberOfSegments; //标签数量
@property(nonatomic) BOOL apportionsSegmentWidthsByContent ; //设置标签宽度是否随内容自适应
@property(nonatomic) NSInteger selected ; //被选中的标签的索引
@property(nonatomic,retain) UIColor *tintColor; //控件颜色
方法:
※初始化方法:传入的数组内容可以是字符串也可以是图像
- (instancetype)initWithItems:(NSArray *)items;
※在指定索引处插入标签标题
- (void)insertSegmentWithTitle:(NSString *)title atIndex:(NSUInteger)segment animated:(BOOL)animated;
※在指定索引处插入标签图像
- (void)insertSegmentWithImage:(UIImage *)image atIndex:(NSUInteger)segment animated:(BOOL)animated;
※移除指定索引处的标签
- (void)removeSegmentAtIndex:(NSUInteger)segment animated:(BOOL)animated;
※移除所有的标签
- (void)removeAllSegments;
※设置指定索引处的标签标题
- (void)setTitle:(NSString *)title forSegmentAtIndex:(NSUInteger)segment;
※获取指定索引处的标签标题
- (NSString *)titleForSegmentAtIndex:(NSUInteger)segment;
※设置指定索引处的标签图像
- (void)setImage:(UIImage *)image forSegmentAtIndex:(NSUInteger)segment;
※获取指定索引处的标签图像
- (UIImage *)imageForSegmentAtIndex:(NSUInteger)segment;
※设置指定索引处标签的宽度
- (void)setWidth:(CGFloat)width forSegmentAtIndex:(NSUInteger)segment;
※ 获取指定索引处的标签的宽度
- (CGFloat)widthForSegmentAtIndex:(NSUInteger)segment;
※设置指定索引处标签内容偏移量
- (void)setContentOffset:(CGSize)offset forSegmentAtIndex:(NSUInteger)segment;
※获取指定索引处标签内容的偏移量
- (CGSize)contentOffsetForSegmentAtIndex:(NSUInteger)segment;
※设置指定索引处标签是否有效(默认有效)
- (void)setEnabled:(BOOL)enabled forSegmentAtIndex:(NSUInteger)segment;
※获取指定索引处的标签的有效性
(BOOL)isEnabledForSegmentAtIndex:(NSUInteger)segment;
※设置设定状态下segment的背景图像
- (void)setBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics;
※获取设定的状态下的segment的背景图像
- (UIImage *)backgroundImageForState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics ;
※设置标签之间分割线的图像
- (void)setDividerImage:(UIImage *)dividerImage forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState barMetrics:(UIBarMetrics) barMetrics ;
※获取标签之间分割线的图像
- (UIImage *)dividerImageForLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState barMetrics:(UIBarMetrics)barMetrics ;
※通过attributes字典设置设定的状态下标签的标题
- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state ;
※获取attributes字典
- (NSDictionary *)titleTextAttributesForState:(UIControlState)state;
※自行设置标签内容的偏移量
- (void)setContentPositionAdjustment:(UIOffset)adjustment forSegmentType:(UISegmentedControlSegment)leftCenterRightOrAlone barMetrics:(UIBarMetrics)barMetrics ;
※获取自定义的标签内容偏移量
- (UIOffset)contentPositionAdjustmentForSegmentType:(UISegmentedControlSegment)leftCenterRightOrAlone barMetrics:(UIBarMetrics)barMetrics ;
具体举例:在ViewController类的- (void)viewDidLoad { [super viewDidLoad];...}方法中添加代码如下:
//1.设置标签内容数组(一个为字符串数组、一个为图像数组)
- //设置标签单元数组,内容全为文字
- NSArray *items = @[@"图片",@"视频",@"音乐",@"美食"];
- //设置标签单元数组,内容全为图像
- NSArray *images = @[[UIImage imageNamed:@"1.png"],[UIImage imageNamed:@"2.png"],[UIImage imageNamed:@"3.png"]];
//2、创建分段控件实例并设置位置frame
- //创建分段控件实例
- UISegmentedControl *sc = [[UISegmentedControl alloc]initWithItems:items]; //用文字数组初始化
- //UISegmentedControl *sc = [[UISegmentedControl alloc]initWithItems:images]; //用图像数组初始化
- //设置位置 sc.frame = CGRectMake(, , , );
//3、设置风格(注意:版本升级后,该属性不在有效)
- //设置风格(iOS7.0以后,这个属性不在起任何作用了)
- //sc.segmentedControlStyle = UISegmentedControlStyleBordered;
//4、设置一开始就选中的标签
- //设置选中的标签
- sc.selectedSegmentIndex = ;
//5、添加控件事件
- //添加控件事件
- [sc addTarget:self action:@selector(segmentedChanged:) forControlEvents:UIControlEventValueChanged];
//6、将控件加到视图中
- //将控件添加到视图中
- [self.view addSubview:sc];
触发控件事件:
#pragma mark -segmentedChanged: 触发控件事件
- -(void)segmentedChanged:(UISegmentedControl*)sender
- {
- NSLog(@"sender: %ld",sender.selectedSegmentIndex); //输出当前的索引值
- }
演示结果如下:
当用字符串文字数组初始化,并且没有触发事件时:当前选中的索引是2
当触发事件时,当前选中的索引是:0
输出结果:
- -- ::51.026 分段控件UISegmentedControl[:] sender:
当用图像数组初始化时 :
iOS:分段控件UISegmentedControl的详细使用的更多相关文章
- iOS在导航栏上居中显示分段控件(UISegmentedControl)
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:nil]; segmentedCont ...
- 使用开关、分段控件和web视图
#import "XViewController.h" @interface XViewController () @end @implementation XViewContro ...
- 【UISegmentedControl】- 分段控件
一.初始化 二.常见的属性 1.segmentedControlStyle属性:设置基本的样式 2.momentary属性:设置在点击后是否恢复原样 . 3.numberOfSegments属性:只读 ...
- iOS系列 基础篇 09 开关、滑块和分段控件
iOS系列 基础篇 09 开关.滑块和分段控件 目录: 案例说明 开关控件Switch 滑块控件Slider 分段控件Segmented Control 1. 案例说明 开关控件(Switch).滑块 ...
- UISegmentedControl——分段控件
分段控件,提供了一组按钮,但是只能激活一个.通过UIControlEventValueChanged事件实现与用户的交互,并通过selectedSegmentIndex判断当前选定的控件,通过titl ...
- iOS开发基础控件--UISegmentedControl
UISegmentedControl全局外观设置 分段控件是我们常用的控件之一,今天把具体用法总结了下: 1.初始化UISegmentedControl [plain] view plaincopy ...
- JS调用Android、Ios原生控件
在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...
- 79.iOS 设备的UI规范和iOS各控件默认高度
iOS设备的UI 规范 iPhone界面尺寸 iPhone图标尺寸 iPad的设计尺寸 iPad图标尺寸 iPhone设备尺寸分辨率比例 iPhone各设备 launch image iOS 各种控件 ...
- [Swift通天遁地]九、拔剑吧-(4)使用开源类库创建可滑动的Segment分段控件
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
随机推荐
- ssm框架问题和Java
http://blog.csdn.net/zzjjiandan/article/details/20853233 BeanFactory的作用是什么? BeanFactory是配置.创建.管理bean ...
- 微信小程序-ios系统-下拉上拉出现白色,如何处理呢?
这几天做小程序,有些页面都是全屏的背景,在安卓上背景是固定的,而在ios上上拉下拉出现白色,测试说体验不太好,一开始我以为是下拉上拉刷新造成的,关闭了依然是这样.为了体验好点,可以按一下解决: 方式一 ...
- 不同版本的jquery的复选框checkbox的相关问题
在尝试写复选框时候遇到一个问题,调试了很久都没调试出来,极其郁闷: IE10,Chrome,FF中,对于选中状态,第一次$('#checkbox').attr('checked',true)可以实现 ...
- 解决Mysql 服务无法启动 服务没有报告任何错误
MySQL数据库在升级到5.7版本后,和之前的版本有些不一样,没有data文件夹,我们都知道MySQL数据库文件是保存在data文件夹中的,网上有人说把5.6版本的data文件夹拷贝一个,这种说法听听 ...
- vmware漏洞之一——转:利用一个堆溢出漏洞实现VMware虚拟机逃逸
转:https://zhuanlan.zhihu.com/p/27733895?utm_source=tuicool&utm_medium=referral 小结: vmware通过Backd ...
- 链式前向星实现的堆优化dij求最短路模板
#include<cstdio> #include<string> #include<cstdlib> #include<cmath> #include ...
- 字符串Hash相关
其实也并不是什么特别难的算法,但是我个人实在是不太喜欢字符串之类的东西(字符串神马的真的是麻烦),于是一直拖着不想看,然后模板题之类的也懒得做. Hash的思想其实也没什么复杂的,就是给定一系列字符串 ...
- 创建jenkins任务
前提条件 整个持续集成中用的相关的应用: gitlab (代码管理) maven(项目管理) 这些应用我们暂时全部放在了一个服务器上. 安装maven: CentOS 6.3 安装Maven3(就一步 ...
- 线程间操作无效: 从不是创建控件“textBox2”的线程访问它
如何:对 Windows 窗体控件进行线程安全调用 线程间操作无效: 从不是创建控件的线程访问它的三种方法 如果使用多线程处理来提高 Windows 窗体应用程序的性能,则你必须确保以线程安全的方式调 ...
- grunt-contrib-qunit安装过程中phantomjs安装报错问题解决
今天自己fork了一个github上别人写的一个关于grunt项目的一个小demo(https://github.com/cowboy/jquery-tiny-pubsub),主要是想学习下grunt ...