UISegmentControl分段控制器是UIKit框架提供的一组按钮栏,提供多个可选的按钮,只能激活其中的一个,响应事件。主要用来在同一层次重要性下不同的信息展示或者不同的界面展示之间切换。例如手机QQ的主界面的消息和电话两个选项卡。

我们看一下UISegmentedControl的继承结构:

UISegmentedControl-->UIControl-->UIView-->UIResponder-->NSObject

在iOS事件相关类中我们知道UIControl将触摸事件转换成了带接收方的控件事件,它本身是个抽象类,只能实例化它的子类来处理控件事件。UISegmentedControl继承自UIControl,它具有所有UIControl的属性和方法。

  • 属性

    @property(nonatomic) UISegmentedControlStyle segmentedControlStyle NS_DEPRECATED_IOS(2_0, 7_0, "The segmentedControlStyle property no longer has any effect") __TVOS_PROHIBITED;
    @property(nonatomic,getter=isMomentary) BOOL momentary; // if set, then we don't keep showing selected state after tracking ends. default is NO
    @property(nonatomic,readonly) NSUInteger numberOfSegments;
    @property(nonatomic) BOOL apportionsSegmentWidthsByContent NS_AVAILABLE_IOS(5_0);
    @property(nonatomic) NSInteger selectedSegmentIndex;
    @property(null_resettable,nonatomic,strong) UIColor *tintColor;

    iOS7之后采用扁平化设计风格,segmentedControlStyle被废弃,设置了也没有效果。momentary设置点击之后是否恢复原样,默认是NO。numberOfSegments表示选项卡的个数。apportionSegmentWidthsByContent默认为NO,如果设置为YES,对于宽度为0的segment它将根据其内容自动调整segment的宽度。selectedSegmentIndex表示当前选中的segment的索引。 tintColor描述View中线条轮廓的颜色,它默认会一直从最底部的View向上层传递,直到某个子View修改了tintColor,传递链断开,新的tintColor继续向上层传递。更多关于tintColorbackgroundColorforegroundColor的区别参考iOS字体颜色图片部分。

  • 对象方法

      - (instancetype)initWithItems:(nullable NSArray *)items; // items can be NSStrings or UIImages. control is automatically sized to fit content
    - (void)insertSegmentWithTitle:(nullable NSString *)title atIndex:(NSUInteger)segment animated:(BOOL)animated; // insert before segment number. 0..#segments. value pinned
    - (void)insertSegmentWithImage:(nullable UIImage *)image atIndex:(NSUInteger)segment animated:(BOOL)animated;
    - (void)removeSegmentAtIndex:(NSUInteger)segment animated:(BOOL)animated;
    - (void)removeAllSegments;
    - (void)setTitle:(nullable NSString *)title forSegmentAtIndex:(NSUInteger)segment; // can only have image or title, not both. must be 0..#segments - 1 (or ignored). default is nil
    - (nullable NSString *)titleForSegmentAtIndex:(NSUInteger)segment;
    - (void)setImage:(nullable UIImage *)image forSegmentAtIndex:(NSUInteger)segment; // can only have image or title, not both. must be 0..#segments - 1 (or ignored). default is nil
    - (nullable UIImage *)imageForSegmentAtIndex:(NSUInteger)segment;
    - (void)setWidth:(CGFloat)width forSegmentAtIndex:(NSUInteger)segment; // set to 0.0 width to autosize. default is 0.0
    - (CGFloat)widthForSegmentAtIndex:(NSUInteger)segment;
    - (void)setContentOffset:(CGSize)offset forSegmentAtIndex:(NSUInteger)segment; // adjust offset of image or text inside the segment. default is (0,0)
    - (CGSize)contentOffsetForSegmentAtIndex:(NSUInteger)segment;
    - (void)setEnabled:(BOOL)enabled forSegmentAtIndex:(NSUInteger)segment; // default is YES
    - (BOOL)isEnabledForSegmentAtIndex:(NSUInteger)segment;

    以上方法比较简单,根据方法名字就知道它的具体功能。需要注意的是initWithItems的数组参数既可以是字符串也可以是图片,segmentedControl会根据文字或者图片的宽高自动设置自己的宽高。setContentOffset设置图片或者文字内容相对于单个segment的坐标原点也就是左上角的偏移量,默认是(0,0).更多关于offset,inset的内容请参考iOS基本框架UIKit之几何形状setEnabled forSegmentAtIndex用来设置指定的索引的segment能否被选中。

  • 1.懒加载分段选择器,并且去掉分段选择器的选中蓝色渲染特效
//分段选择器
-(UISegmentedControl *)switchBtn{
if (!_switchBtn) {
_switchBtn=[[UISegmentedControl alloc]initWithItems:@[@"第1页",@"第2页",@"第3页"]];
[self.view addSubview:_switchBtn];
_switchBtn.backgroundColor=[UIColor whiteColor];
_switchBtn.layer.borderColor=[UIColor whiteColor].CGColor;
_switchBtn.tintColor=[UIColor whiteColor];
[_switchBtn addTarget:self action:@selector(actionSwitchBtn:) forControlEvents:UIControlEventValueChanged];
//设置分段选择器选中颜色
[_switchBtn setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor blackColor]} forState:UIControlStateNormal];
[_switchBtn setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor blueColor]} forState:UIControlStateSelected];
_switchBtn.selectedSegmentIndex=;
}
return _switchBtn;
}
  • 2.分段选择器与UIScrollView联动方法:
-(void)actionSwitchBtn:(UISegmentedControl*)segmentedControl{
self.scrollView.contentOffset=CGPointMake(self.view.frame.size.width*self.switchBtn.selectedSegmentIndex, );
}
#pragma -mark scrollview的代理方法
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
self.switchBtn.selectedSegmentIndex=self.scrollView.contentOffset.x/self.scrollView.frame.size.width;
}

UISegmentedControl去掉背景色与UIScrollView联动的更多相关文章

  1. UIColor用自定义颜色,TableView去掉背景色

    1.用mac系统自带的数码测色计,选RGB模式,将值添加到ColorWithRed:xxx.0/255 最后的alpha选1.0 2.TableView的背景色要用setBackgroundView的 ...

  2. 小程序BUTTON点击,去掉背景色

    添加hover-class <button form-type="submit"  hover-class="btn-hover"></but ...

  3. idea xml 绿背景色 去掉拼写检查

    去掉背景色 去掉拼写检查

  4. IOS 改变UISearchBar的背景色

    之前网上提供的方法试了很多种  都不能很好的去掉背景色  ,修改背景色方法如下: searchbar.barStyle = UIBarStyleBlackTranslucent; searchbar. ...

  5. iOS-UI-UI控件概述

    以下列举一些在开发中可能用得上的UI控件: IBAction和IBOutlet,UIView 1 @interface ViewController : UIViewController 2 3 @p ...

  6. iOS-UI控件概述

    IBAction和IBOutlet,UIView 1 @interface ViewController : UIViewController 2 3 @property(nonatomic, wea ...

  7. 不透明度opacity进阶

    一.opacity属性 1.opacity 习惯上说“透明度”,其实应该叫“不透明度”.opacity 意思:不透明,而背景色的默认值:transparent意思才是“透明的”.所以opacity用来 ...

  8. 移动端 几个css3属性的练习

    转行做前端,上班有一个星期了,什么都不懂,今天学习了几个新的css3属性,记录下来. 注:所有的测试均是在chrome上手机模式测试,与真实的手机环境可能有误差 1:-webkit-tap-heigh ...

  9. 【译】仿Taasky的3D翻转菜单动画实现

    最终效果 最终效果 开始 首先下载并打开一个事先搭好架子的Demo,然后来分析一下.这个Demo包含一个主页和详情页,其中MenuViewController继承自UITableViewControl ...

随机推荐

  1. REST的本质,就是用户操作某个网络资源(具有独一无二的识别符URI),获得某种服务,也就是动词+资源(都是HTTP协议的一部分)

    REST的名称”表现状态转化”中,省略了主语.”表现”其实指的是资源的表现. 资源就是网络上的一个数据实体,或者说是一个具体信息.它可以是一段文本.一张图片.一首歌曲.一种服务.你可以用一个URI(统 ...

  2. dict built-in function

    映射类型:字典 字典是无序的,映射类型对象里哈希值和被指向的对象是一对多的关系,字典中的键必须是可哈希的,所有不可变的类型都是可哈希的,另外针对数字键来说,值相等的两个数字是相同的键,例如1和1.0: ...

  3. python读取一个文件的每一行判断是否为素数,并把结果写到另一个文件中

    刚刚学习python的菜鸟,这道题包括:文件的读写,python的参数调用,异常的使用,函数的使用 创建一个文本文件inti_prime.txt 执行命令:python Prime.py init_p ...

  4. .NET 的 WebSocket 开发包比较 【已翻译100%】--网址:http://www.oschina.net/translate/websocket-libraries-comparison-2

    编者按 本文出现在第三方产品评论部分中.在这一部分的文章只提供给会员,不允许工具供应商用来以任何方式和形式来促销或宣传产品.请会员报告任何垃圾信息或广告. Web项目常常需要将数据尽可能快地推送给客户 ...

  5. Palindromic Squares

    链接 分析:求出b进制以后在判是否为回文 /* ID:wanghan PROB:palsquare LANG:C++ */ #include "iostream" #include ...

  6. [AHOI 2005] 航线规划

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1969 [算法] 首先离线 , 将删边操作转化为加边操作 不妨首先将这张图按边-双连通 ...

  7. RadioGroup和RadioButton

    Activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  8. 微信小程序服务类目大坑:特殊行业服务类目所需资质材料

    作为一个技术开发人员,遇到特殊行业服务类目所需资质材料,只能叫苦连天了,妈的,这个不是技术可以解决的问题,如果技术可以解决的问题都不是问题. 百牛信息技术bainiu.ltd整理发布于博客园 特殊行业 ...

  9. Centos7 编译安装 Nginx、MariaDB、PHP

    前言 本文主要大致介绍CentOS 7下编译安装Nginx.MariaDB.PHP.面向有Linux基础且爱好钻研的朋友.技艺不精,疏漏再所难免,还望指正. 环境简介: 系统: CentOS 7,最小 ...

  10. 转载:PowerPivot for excel 100 Create KPI

    PowerPivot for excel 100 Create KPI      最近在了解PowerPivot,遇到了一些问题,不过还好最近都解决了,下面介绍一下关于在PowerPivot里面如何创 ...