GIF 图解 UISegmentedControl

作者: 查无此人123 | 来源:发表于2016-08-30 17:57 被阅读473次

写在前头

决定开始做这件事的时候,我是愉悦的
做到一半的时候,我是拒绝的
直到最后,我是崩溃的....
好了,说一下吧,我主要是想同过gif动图的方式记录和学习iOS里面的一些控件,至于为什么从UISegmentedControl开始,我想说我就是想起来了,我就做来试试,但做起来才发现,想把自己学到的东西通过简单形象的方式表达出来,真的好难...这还只是一个控件.....就我现在的崩溃程度,还是需要有人鼓励一下子的哈哈哈
好了,开始吧~

What?显示什么内容

  • init(items:[AnyObject]?)UISgmentedControl自己的初始化方法,传入的items参数是一个数组,用来放置将要显示在每个选项中的内容,同时注意到这个数组元素的类型,是AnyObject,但并不是什么元素都可以放,实际上,只能放两种,UIImage和String两种类型,且可以混合使用

  • insertSegmentWithTitle, insertSegmentWithImage插入新的图片选项或文字选项

    Insert Title.gif
    Insert Image.gif
  • removeSegmentAtIndex, removeAllSegment删除某个选项,或删除所有选项

    remove a segment.gif
    RemoveAllSegment.gif
  • setTitle(title: String?, forSegmentAtIndex segment: Int)把某个选项重新设置成文字显示
    setImage(image: UIImage?, forSegmentAtIndex segment: Int) 把某个选项重新设置成图片显示

    SetTitleOrImageForSegment.gif
  • titleForSegmentAtIndex(segment: Int) -> String? 读取某个选项的文字内容
    imageForSegmentAtIndex(segment: Int) -> UIImage?读取某个选项的图片内容

    GetContent.gif

注意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的时候,也就是只有一个选项的时候才有效果

ContentPosition.gif
  • 可以读取或者设置其选项内容的位置(可以移到view外面)
  • contentPositionAdjustmentForSegmentType(leftCenterRightOrAlone: UISegmentedControlSegment, barMetrics: UIBarMetrics) -> UIOffset
  • contentOffsetForSegmentAtIndex(segment: Int) -> CGSize
尺寸
  • 设置宽度调节

  • apportionsSegmentWidthsByContent 这个选项只对宽度值设置为0的选项有作用,宽度为0意味着自动调节,而自动调节应该是分两种情况,这个设置为true的话,就是按内容宽度调节,而剩下的选项则平均分配剩下的宽度,如果设置为false,则是所有选项平均分配整个长度.

  • setWidth(width: CGFloat, forSegmentAtIndex segment: Int) 为单独某个选项设置宽度值,如果设置为0,则视为自动调整宽度

    尺寸.gif
  • 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
背景
  • 设置背景图片 setBackgroundImage(backgroundImage: UIImage?, forState state: UIControlState, barMetrics: UIBarMetrics)

    SetBackground.gif
  • 读取背景图片backgroundImageForState(state: UIControlState, barMetrics: UIBarMetrics) -> UIImage?

文字属性
  • 通过NSAttributedString来更改字体,文字颜色,阴影public func setTitleTextAttributes(attributes: [NSObject : AnyObject]?, forState state: UIControlState)

  • 读取装有文字属性的字典titleTextAttributesForState(state: UIControlState) -> [NSObject : AnyObject]?

这个文字属性字典也不算是其独有的,再就是我也没有弄的很明白,这个就留到以后看什么时候再单独做一个吧

Action 点击动作相关

  • setEnabled(enabled: Bool, forSegmentAtIndex segment: Int)可以设置某个选项是否可以点击,如果赋值为false,样式上看起来,做了变暗的处理

    SetEnable.gif
    • isEnabledForSegmentAtIndex(segment: Int) -> Bool, 可以判断某个segment选项是否允许被点击
  • momentary为false点击每个选项,相应的选项都会显示被点击的状态(也就是高亮状态),如赋值为true,则点击状态不会一直显示,会闪一下就消失了,系统默认是false

    momentary = true.gif
    momentary = false.gif
  • selectedSegmentIndex类型是Int,用来读取或确定,哪一个选项处于被选中状态

相关文章

网友评论

本文标题:GIF 图解 UISegmentedControl

本文链接:https://www.haomeiwen.com/subject/vdtqettx.html