GIF 图解 UISegmentedControl
写在前头
决定开始做这件事的时候,我是愉悦的
做到一半的时候,我是拒绝的
直到最后,我是崩溃的....
好了,说一下吧,我主要是想同过gif动图的方式记录和学习iOS里面的一些控件,至于为什么从UISegmentedControl开始,我想说我就是想起来了,我就做来试试,但做起来才发现,想把自己学到的东西通过简单形象的方式表达出来,真的好难...这还只是一个控件.....就我现在的崩溃程度,还是需要有人鼓励一下子的哈哈哈
好了,开始吧~
What?显示什么内容
-
init(items:[AnyObject]?)
UISgmentedControl自己的初始化方法,传入的items参数是一个数组,用来放置将要显示在每个选项中的内容,同时注意到这个数组元素的类型,是AnyObject,但并不是什么元素都可以放,实际上,只能放两种,UIImage和String两种类型,且可以混合使用 -
Insert Title.gifinsertSegmentWithTitle
,insertSegmentWithImage
插入新的图片选项或文字选项
Insert Image.gif
-
remove a segment.gifremoveSegmentAtIndex
,removeAllSegment
删除某个选项,或删除所有选项
RemoveAllSegment.gif -
SetTitleOrImageForSegment.gifsetTitle(title: String?, forSegmentAtIndex segment: Int)
把某个选项重新设置成文字显示
setImage(image: UIImage?, forSegmentAtIndex segment: Int)
把某个选项重新设置成图片显示
-
GetContent.giftitleForSegmentAtIndex(segment: Int) -> String?
读取某个选项的文字内容
imageForSegmentAtIndex(segment: Int) -> UIImage?
读取某个选项的图片内容
注意image与title的设置是互相替换覆盖的,如果设置了image其title就没有了,反过来也是如此
-
numberOfSegements
获取选项片段的数量(只读属性)`
How?如何显示上述的内容
位置
- 调整每个选项或所有选项的内容文字或图片的位置
setContentPositionAdjustment(adjustment: UIOffset, forSegmentType leftCenterRightOrAlone: UISegmentedControlSegment, barMetrics: UIBarMetrics)
setContentOffset(offset: CGSize, forSegmentAtIndex segment: Int)
下面的动图中,我使用的是第一个方法,左上角的center,left,right,any,alone,对应的是方法中的第二个参数,参数类型是UISegmentedControlSegment
,这是一个枚举类型,center,left,right,any,alone就是其对应的几个case,效果直接看图吧,这里要提一下的是,alone只有在segment的数量为1的时候,也就是只有一个选项的时候才有效果
- 可以读取或者设置其选项内容的位置(可以移到view外面)
contentPositionAdjustmentForSegmentType(leftCenterRightOrAlone: UISegmentedControlSegment, barMetrics: UIBarMetrics) -> UIOffset
contentOffsetForSegmentAtIndex(segment: Int) -> CGSize
尺寸
-
设置宽度调节
-
apportionsSegmentWidthsByContent
这个选项只对宽度值设置为0的选项有作用,宽度为0意味着自动调节,而自动调节应该是分两种情况,这个设置为true的话,就是按内容宽度调节,而剩下的选项则平均分配剩下的宽度,如果设置为false,则是所有选项平均分配整个长度. -
尺寸.gifsetWidth(width: CGFloat, forSegmentAtIndex segment: Int)
为单独某个选项设置宽度值,如果设置为0,则视为自动调整宽度
-
widthForSegmentAtIndex(segment: Int) -> CGFloat
,获取某个选项的宽度值
颜色
-
tintColor
类型是UIColor,可以理解为边框和内容的颜色
TintColor.gif
边框
- 可以给每个segment选项之间增加一个间隔图片
setDividerImage(dividerImage: UIImage?, forLeftSegmentState leftState: UIControlState, rightSegmentState rightState: UIControlState, barMetrics: UIBarMetrics)
-
dividerImageForLeftSegmentState(leftState: UIControlState, rightSegmentState rightState: UIControlState, barMetrics: UIBarMetrics) -> UIImage?
SetDividedImage.gif
背景
-
设置背景图片
SetBackground.gifsetBackgroundImage(backgroundImage: UIImage?, forState state: UIControlState, barMetrics: UIBarMetrics)
-
读取背景图片
backgroundImageForState(state: UIControlState, barMetrics: UIBarMetrics) -> UIImage?
文字属性
-
通过NSAttributedString来更改字体,文字颜色,阴影
public func setTitleTextAttributes(attributes: [NSObject : AnyObject]?, forState state: UIControlState)
-
读取装有文字属性的字典
titleTextAttributesForState(state: UIControlState) -> [NSObject : AnyObject]?
这个文字属性字典也不算是其独有的,再就是我也没有弄的很明白,这个就留到以后看什么时候再单独做一个吧
Action 点击动作相关
-
SetEnable.gifsetEnabled(enabled: Bool, forSegmentAtIndex segment: Int)
可以设置某个选项是否可以点击,如果赋值为false,样式上看起来,做了变暗的处理
-
isEnabledForSegmentAtIndex(segment: Int) -> Bool
, 可以判断某个segment选项是否允许被点击
-
-
momentary = true.gifmomentary
为false点击每个选项,相应的选项都会显示被点击的状态(也就是高亮状态),如赋值为true,则点击状态不会一直显示,会闪一下就消失了,系统默认是false
momentary = false.gif -
selectedSegmentIndex
类型是Int,用来读取或确定,哪一个选项处于被选中状态