IOS界面篇

一、UIView与UIWindow的关系

就像大家看见的一样,UIView就是表示屏幕上的一块矩形区域,它在App中占有绝对重要的地位,因为iOS中几乎所有的可视控件都是UIView的子类。
UIView继承自UIResponder,它是负责显示的画布,如果说把window比作画框的话。我们就是不断地在画框上移除、更换或者叠加画布,或者在画布上叠加其他画布,大小当然由绘画者来决定了。有了画布,我们就可以在上面任意施为了。很多简单的东西我会把库里面的内容贴出来,如果东西太多贴出来就不太好,朋友们自己去库文件里面看吧。这个类在UIView.h里面哦。

UIView的功能 :

  • 管理矩形区域里的内容
  • 处理矩形区域中的事件
  • 子视图的管理
  • 还能实现动画
    UIView的子类也具有这些功能

窗口UIWindow是一个视图的子类。

窗口的主要功能:

一是提供一个区域来显示视图,二是将事件分发给视图。一个应用通常只有一个窗口,但也不例外。window对象有以下职责:它包含了应用程序的可视化的内容·它为视图和其他应用程序对象在触摸事件中提供了关键性的作用·它与视图控制器一起协作来呈现数据。

二、UIView的创建和属性

1.UIView的创建

定义一个全局的UIView对象


var myView:UIView?

2.UIView的属性方法

frame 是CGRect frame的origin是相对于父视图的左上角原点(0,0)的位置,改变视图的frame会改变center
center 是CGPoint 指的就是整个视图的中心点,改变视图的center也会改变frame
bounds 是CGRect 是告诉子视图本视图的原点位置(通俗的说就是,子视图的frame的origin与父视图的bounds的origin的差,就是子视图相对于父视图左上角的位置,如果结果为负,则子视图在父视图外)
通过addSubview:这个方法添加子类,不管谁添加它,只要越晚添加,视图就在越上层

let view1 = UIView(frame: CGRect(x: 10,y: 50,width: 200,height: 200))
  view1.center = CGPoint(x: 100, y: 100)

一个 UIView 里面可以包含许多的 Subview(其他的 UIView),而这些 Subview 彼此之间是有所谓的阶层关系,这有点类似绘图软体中图层的概念,下面代码演示了几个在管理图层(Subview)上常用的方法。

//新增和移除SubView
    myView?.removeFromSuperview()
    myView?.addSubview(label)

在UIView中将Subview往前或是往后移动一个图层,往前移动会覆盖住较后层的 Subview,而往后移动则会被较上层的Subview所覆盖。

//将Subview往前移动一个图层(与它的前一个图层对调位置)
  self.view.bringSubviewToFront(myView!)
  //将Subview往后移动一个图层(与它的后一个图层对调位置)
  self.view.sendSubviewToBack(myView!)
 
在UIView中使用索引Index交换两的Subview彼此的图层层级。
 
//交换两个图层
self.view.exchangeSubviewAtIndex(index1, withSubviewAtIndex: index2)

使用Subview的变数名称取得它在UIView中的索引值(Index )。

//获取index
let index = self.view.subviews.indexOf(subView名称)

替Subview加上NSInteger 的标记(Tag)好让之后它们分辨彼此。

//加上标记
myView?.tag = 1
//通过标记得到view 返回值为UIView
let otherView = UIView().viewWithTag(1)

取得UIView中所有的Subview,呼叫此方法会传回一个 NSArray,并以由后往前的顺序列出这些 Subview。

UIView().subviews

3.UIView中要注意的那些事儿

在iOS应用上实现UI就需要子类化UIView,也就是要重写UIView的init方法。注意:两种语言有所区别。
Objective-C只需在UIView子类中重写必要的init方法。要初始化一个UIView框架,就要重写initWithFrame:框架,如下所示:

@implementation SubUIView
 -(id) initWithFrame:(CGRect)frame{
     self = [super initWithFrame:frame];
     if (self != nil) {
        // ...
     }
    return self;
  }
 @end
然而Swift需要多一些步骤来重写同一个init方法。首先,重写使用CGRect框架作为其参数的init方法。根据UIView文档,用Swift语言构建时,须重写init( coder: ),但我们不需要这种方法,就用如下代码处理。类属性初始化所需的代码可以在init( frame: )中执行。
class SubUIView: UIView {
      override init(frame: CGRect) {
          super.init(frame: frame)
          // ...
      }
     required init?(coder aDecoder: NSCoder) {
          fatalError("init(coder:) has not been implemented")
     }
 }

当然,UIView的属性和用法还有很多很多,在以后的UI资料中还会多次介绍,希望大家关注哦。

三、UIWindow的创建和属性

1.UIWindow的创建

定义一个全局的UIWindow变量

var window:UIWindow?

2.UIWindow的属性介绍

UIWindow() 创建一个UIWindow对象 参数为 这个UIWindow的frame,下面我细说

self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
使被使用对象的主窗口显示到屏幕的最前端,注意:! 的意思是允许window==nil 时候运行,但是window==nil程序运行崩溃 !

self.window!.makeKeyAndVisible()
设置窗口的背景颜色

self.window!.backgroundColor = UIColor.redColor();

 

 

一、UILabel(文本标签)

UILabel主要是用来显示简短的文本。常用属性如下:

//创建一个文本标签并设置它的frame
    let label = UILabel(frame: CGRect(x:10, y:50, width:200, height:200))
    //设置文本标签的字体颜色为黑色
    label.textColor = UIColor.black
    //设置文本标签的文字
    label.text = "我是萌萌哒"
    //设置文本标签的文本显示位置为居中,还可以居左(Left)、居右(Right)、合乎情理的(Justified)、自然的(Natural)
    label.textAlignment = .center
    //自适应字体大小
    label.adjustsFontSizeToFitWidth = true
    //设置字体大小
    label.font = UIFont.boldSystemFont(ofSize: 12)
    //文本行数,为0就是自动换行
    label.numberOfLines = 0
    label.lineBreakMode = .byCharWrapping
    //lineBreakMode属性的枚举下面会详细介绍
    //是否能和用户交互
    label.isUserInteractionEnabled=true
    //文字是否可变,默认值是true
    label.isEnabled=true;
    //设置阴影颜色和偏移量
    label.shadowColor = UIColor.blue
    label.shadowOffset = CGSize(width:0.5, height:0.5)
    //设置是否高亮和高亮颜色
    label.isHighlighted = true
    label.highlightedTextColor = UIColor.red

typedef enum {
UILineBreakModeWordWrap = 0,
UILineBreakModeCharacterWrap,//swift中已经没有这个属性了
UILineBreakModeClip,//截去多余部分
UILineBreakModeHeadTruncation,//截去头部
UILineBreakModeTailTruncation,//截去尾部
UILineBreakModeMiddleTruncation,//截去中间
} UILineBreakMode;

二、UIControl-所有具有事件处理控件的父类

控件主要响应的3中事件

  • 基于触摸的事件
  • 基于值的事件
  • 基于编辑的事件
    在UIControl中常用的事件有:UIControlEventTouchUpInside 如按钮的点击事件、UIControlEventValueChanged 如进度条拖动。

    1.属性

  • enable
    控件默认是启动的。要禁用控件,可以将enable设置成false,这将导致控件忽略任何触摸事件。被禁用后,控件还可以用不同的方式显示自己,比如变成灰色不可用。虽然是由控件的子类完成的,这个属性却存在于UIControl中。


  control.enabled = true

selected
当用户选中控件时,UIControl类会将其selected属性设置为YES。子类有时使用这个属性来让控件选择自身,或者来表现不同的行为方式。

 control.selected = true

contentVerticalAlignment
控件如何在垂直方向上布置自身的内容。默认是将内容顶端对其,对于文本字段,可能会改成UIControlContentVerticalAlignmentCenter。

control.contentVerticalAlignment = .bottom
control.contentVerticalAlignment = .center
control.contentVerticalAlignment = .fill
control.contentVerticalAlignment = .top

contentHorizontalAlignment
水平对齐方式

control.contentHorizontalAlignment = .bottom
control.contentHorizontalAlignment = .center
control.contentHorizontalAlignment = .fill
control.contentHorizontalAlignment = .top
  • 2.事件通知

  • UIControlEventTouchDown
    单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候。
  • UIControlEventTouchDownRepeat
    多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候。
  • UIControlEventTouchDragInside
    当一次触摸在控件窗口内拖动时。
  • UIControlEventTouchDragOutside
    当一次触摸在控件窗口之外拖动时。
  • UIControlEventTouchDragEnter
    当一次触摸从控件窗口之外拖动到内部时。
  • UIControlEventTouchDragExit
    当一次触摸从控件窗口内部拖动到外部时。
  • UIControlEventTouchUpInside
    所有在控件之内触摸抬起事件。
  • UIControlEventTouchUpOutside
    所有在控件之外触摸抬起事件(点触必须开始与控件内部才会发送通知)。
  • UIControlEventTouchCancel
    所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断。
  • UIControlEventTouchChanged
    当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。你可以配置滑块控件何时发送通知,在滑块被放下时发送,或者在被拖动时发送。
  • UIControlEventEditingDidBegin
    当文本控件中开始编辑时发送通知。
  • UIControlEventEditingChanged
    当文本控件中的文本被改变时发送通知。
  • UIControlEventEditingDidEnd
    当文本控件中编辑结束时发送通知。
  • UIControlEventEditingDidOnExit
    当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。
  • UIControlEventAlltouchEvents
    通知所有触摸事件。
  • UIControlEventAllEditingEvents
    通知所有关于文本编辑的事件。
  • UIControlEventAllEvents
    通知所有事件。
 

UIButton-按钮

按钮的创建

let button:UIButton = UIButton(type: UIButtonType.contactAdd)
    button.frame = CGRect(x:100, y:100, width:100, height:100)
    //设置按钮的背景颜色
    button.backgroundColor = UIColor.cyan
    //设置按钮的背景图片
    button.setBackgroundImage(UIImage(named:"background"),for:.normal)
    //对于Custom定制类型按钮,代码可简化为:
    let button1 = UIButton(frame: CGRect(x:100, y:100, width:100, height:100))
    //设置按钮文字
    button.setTitle("点我一下", for: UIControlState.normal)
    //设置button的点击事件
    button.addTarget(self, action: #selector(ViewController.clickButton(_:)), for: UIControlEvents.TouchUpInside)
    self.view.addSubview(button)

按钮有下面四种类型:

  • UIButtonType.ContactAdd:前面带“+”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果
  • UIButtonType.DetailDisclosure:前面带“!”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果
  • UIButtonType.System:前面不带图标,默认文字颜色为蓝色,有触摸时的高亮效果
  • UIButtonType.Custom:定制按钮,前面不带图标,默认文字颜色为白色,无触摸时的高亮效果
  • UIButtonType.InfoDark:为感叹号“!”圆形按钮
  • UIButtonType.InfoLight:为感叹号“!”圆形按钮

    按钮的文字设置

  • UIControlState.Normal:普通状态下的文字
  • UIControlState.Highlighted:触摸状态下的文字
  • UIControlState.Disabled:禁用状态下的文字

按钮文字颜色的设置

button.setTitleColor(UIColor.black,for: .normal) //普通状态下文字的颜色
  button.setTitleColor(UIColor.green,for: .highlighted) //触摸状态下文字的颜色
  button.setTitleColor(UIColor.gray,for: .disabled) //禁用状态下文字的颜色

按钮文字阴影颜色的设置

button.setTitleShadowColor(UIColor.green,for:.normal) //普通状态下文字阴影的颜色
  button.setTitleShadowColor(UIColor.yellow,for:.highlighted) //普通状态下文字阴影的颜色
  button.setTitleShadowColor(UIColor.gray,for:.disabled) //普通状态下文字阴影的颜色

 

按钮文字图标的设置

button.setImage(UIImage(named:"pic"),for:.normal)  //设置图标
  button.adjustsImageWhenHighlighted=false //使触摸模式下按钮也不会变暗
  button.adjustsImageWhenDisabled=false //使禁用模式下按钮也不会变暗
  • 常用的触摸事件类型

  • TouchDown:单点触摸按下事件,点触屏幕
  • TouchDownRepeat:多点触摸按下事件,点触计数大于1,按下第2、3或第4根手指的时候
  • TouchDragInside:触摸在控件内拖动时
  • TouchDragOutside:触摸在控件外拖动时
  • TouchDragEnter:触摸从控件之外拖动到内部时
  • TouchDragExit:触摸从控件内部拖动到外部时
  • TouchUpInside:在控件之内触摸并抬起事件
  • TouchUpOutside:在控件之外触摸抬起事件
  • TouchCancel:触摸取消事件,即一次触摸因为放上太多手指而被取消,或者电话打断
设置按钮的圆角
button.layer.masksToBounds = true
  button.layer.cornerRadius = 6.0
设置按钮点击时高亮,默认点击时是高亮的状态
  button.showsTouchWhenHighlighted = true

UIButton在开发的过程中应用比较多,以后还会继续补充的,请大家多多关注。

UITextField-文本输入框

1.文本输入框的创建

let textF = UITextField(frame: CGRect(x:50,y:300,width:100,height:30))
  //设置文肯输入框的边框样式
  textF.borderStyle = UITextBorderStyle.none
  //设置文本框的提示文字
  textF.placeholder="请输入"
  //设置用*显示,比如密码 swift3.0废弃
  // textF.secureTextEntry = true
  //设置文本输入框的背景颜色
  textF.backgroundColor = UIColor.white
  self.view.addSubview(textF)

 

  • 文本框的样式:

  • UITextBorderStyle.None:无边框
  • UITextBorderStyle.Line:直线边框
  • UITextBorderStyle.RoundedRect:圆角矩形边框
  • UITextBorderStyle.Bezel:边线+阴影

    文字大小超过文本框长度时自动缩小字号
//当文字超出文本框宽度时,自动调整文字大小
  textF.adjustsFontSizeToFitWidth=true 
  textF.minimumFontSize=14  //最小可缩小的字号

 

设置水平/垂直对齐方式

//水平对齐 
 textF.textAlignment = .right //水平右对齐
 textF.textAlignment = .center //水平居中对齐
 textF.textAlignment = .left //水平左对齐

 // 垂直对齐 
 textF.contentVerticalAlignment = .top  //垂直向上对齐
 textF.contentVerticalAlignment = .center  //垂直居中对齐
 textF.contentVerticalAlignment = .bottom  //垂直向下对齐

 

设置背景图片
 textF.borderStyle = UITextBorderStyle.none //先要去除边框样式
 textF.background=UIImage(named:"background")

设置输入框右边的小叉叉(清除按钮)

textF.clearButtonMode=UITextFieldViewMode.whileEditing  //编辑时出现清除按钮
 textF.clearButtonMode=UITextFieldViewMode.unlessEditing  //编辑时不出现,编辑后才出现清除按钮
 textF.clearButtonMode=UITextFieldViewMode.always  //一直显示清除按钮

设置文本框关联的键盘类型

textF.keyboardType = UIKeyboardType.default  //系统默认的虚拟键盘
  //显示英文字母的虚拟键盘  swift3.0废弃
  // textF.keyboardType = UIKeyboardType.aSCIICapable  
  textF.keyboardType = UIKeyboardType.numbersAndPunctuation  //显示数字和标点的虚拟键盘
  textF.keyboardType = UIKeyboardType.URL  //显示便于输入数字的虚拟键盘
  textF.keyboardType = UIKeyboardType.numberPad  //显示便于输入数字的虚拟键盘
  textF.keyboardType = UIKeyboardType.phonePad  //显示便于拨号呼叫的虚拟键盘
  textF.keyboardType = UIKeyboardType.namePhonePad  //显示便于聊天拨号的虚拟键盘
  textF.keyboardType = UIKeyboardType.emailAddress  //显示便于输入Email的虚拟键盘
  textF.keyboardType = UIKeyboardType.decimalPad  //显示用于输入数字和小数点的虚拟键盘
  textF.keyboardType = UIKeyboardType.twitter  //显示方便些Twitter的虚拟键盘
  textF.keyboardType = UIKeyboardType.webSearch  //显示便于在网页上书写的虚拟键盘

使文本框在界面打开时就获取焦点,并弹出输入键盘

 textF.becomeFirstResponder()

使文本框失去焦点,并收回键盘

 textF.resignFirstResponder()

设置键盘return键的样式

textF.returnKeyType = UIReturnKeyType.done//表示完成输入
  textF.returnKeyType = UIReturnKeyType.go //表示完成输入,同时会跳到另一页
  textF.returnKeyType = UIReturnKeyType.search //表示搜索
  textF.returnKeyType = UIReturnKeyType.join //表示注册用户或添加数据
  textF.returnKeyType = UIReturnKeyType.next //表示继续下一步
  textF.returnKeyType = UIReturnKeyType.send //表示发送。

键盘return键的响应

class ViewController: UIViewController,UITextFieldDelegate {

  override func viewDidLoad() {
      super.viewDidLoad()

     let textField = UITextField(frame: CGRect(x:10,y:160,width:200,height:30))
     //设置边框样式为圆角矩形
     textField.borderStyle = UITextBorderStyle.roundedRect
     textField.returnKeyType = UIReturnKeyType.done
     textField.delegate=self
     self.view.addSubview(textField)
   }

  func textFieldShouldReturn(_ textField:UITextField) -> Bool   {
    //收起键盘
    textField.resignFirstResponder()
    return true;
   }
}

2.关于UITextField的attributedPlaceholder属性设置

我们在使用textfield的时候为了实现更美观的效果,常常会设置placeholder的相关属性,那就是attributedPlaceholder。
//创建属性字典,存放我们想要修改的属性
  var attributes:[String:AnyObject] = NSMutableDictionary() as! [String:AnyObject]
  attributes[NSFontAttributeName] = UIFont.systemFont(ofSize: 13)
  //创建带属性的字符串
  let string:NSAttributedString = NSAttributedString.init(string: "身份证号中含字母必须大写", attributes: attributes)
  //设置placeholder的属性
  textF.attributedPlaceholder = string

 

3.关于UITextField的光标的设置

这个demo中主要是实现以leftView为左边界,并且一直显示,使光标的位置右移。

let textF = UITextField(frame: CGRect(x:50,y:300,width:100,height:30))
  textF.backgroundColor = UIColor.yellow
  self.view.addSubview(textF)
  textF.leftView = UIView(frame: CGRect(x:0,y:0,width:30,height:30))
  textF.leftView?.backgroundColor = UIColor.blue
  textF.leftViewMode = UITextFieldViewMode.always

4.UITextField的代理方法

//将要开始输入时调用
 func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
     print("开始输入")
     return true
 }
 func textFieldDidBeginEditing(_ textField: UITextField) {
     print("已经开始输入")
 }
 //输入结束时调用
 func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
     print("输入结束")
     return true
 }
 func textFieldDidEndEditing(_ textField: UITextField) {
     print("已经结束输入")
 }
 //清除文字按钮点击事件
 func textFieldShouldClear(_ textField: UITextField) -> Bool {
     print("清除输入内容")
     return true
 }
 //键盘上的return按钮
 func textFieldShouldReturn(_ textField: UITextField) -> Bool {
     //隐藏输入键盘
     textField.resignFirstResponder()
     return true
}

5.storyboard/xib中设置placeholder的颜色

我们在用storyboard/xib中可能会发现并没有设置textField的placeholder的颜色的属性,其实我们可以这样做:


设置placeholder.png


在keyPath中写入placeholderLabel.textColor,Type选择Color,Value就是设置自己喜欢的颜色啦。以后我们需要其他属性的时候也可以按照这种方法添加哦。

UIImagevIew-图像视图

1.图像视图的创建

let imageView = UIImageView(image:UIImage(named:"icon"))
  imageView.frame = CGRect(x: 10, y: 10, width: 100, height: 100)
  self.view.addSubview(imageView)
  //修改图片
  imageView.image = UIImage(named:"icon2")
  //保持图片比例
  imageView.contentMode = .scaleAspectFit

2.从文件目录中获取图片

let path = Bundle.main.path(forResource: "apple", ofType: "png")
  let newImage = UIImage(contentsOfFile: path!)
  let imageView = UIImageView(image:newImage)
  self.view.addSubview(imageView)

3.从网络地址获取图片

//定义NSURL对象
 let url = NSURL(string: "http://hangge.com/blog/images/logo.png")
 //从网络获取数据流
 let data = NSData(contentsOf: url! as URL)
 //通过数据流初始化图片
 let newImage = UIImage(data: data! as Data)
 let imageView = UIImageView(image:newImage);
 self.view.addSubview(imageView)

4.实现动画效果

class ViewController: UIViewController {

       var imageView:UIImageView!
       override func viewDidLoad() {
       super.viewDidLoad()

       imageView=UIImageView()
       imageView.frame = CGRect(x: 10, y: 10, width: 100, height: 100)
       //设置动画图片
       imageView.animationImages=[UIImage(named:"icon")!,UIImage(named:"icon2")!]
       //设置每隔0.5秒变化一次
       imageView.animationDuration=0.5
       self.view.addSubview(imageView)
 }

 override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    imageView.startAnimating()
 }

 override func viewWillDisappear(_ animated: Bool) {
    super.viewWillAppear(animated)
    imageView.stopAnimating()
 }  
}

UITextView-多行文本输入框

1.UITextView的创建

let textview = UITextView(frame:CGRect(x: 10, y: 10, width: 100, height: 100))
    textview.layer.borderWidth=1  //边框粗细
    textview.layer.borderColor=UIColor.gray.cgColor //边框颜色
    textview.backgroundColor = UIColor.clear //背景颜色
    textview.backgroundColor = UIColor.clear
    textview.isEditable = true //设置为可编辑状态
    //可选范围
    textview.selectedRange = NSRange(location: 0, length: Int.max)
    //内容是否可选
    textview.isSelectable=false
    self.view.addSubview(textview)

2.UITextView的代理方法

UITextView的代理方法与UITextField的代理方法非常类似,在这里就不过多介绍了。大家千万不要忘记设置代理哦。{{{(>_<)}}}

func textViewShouldBeginEditing(_ textView: UITextView) -> Bool {
        print("开始输入")
        return true
   }
   func textViewDidBeginEditing(_ textView: UITextView) {
        print("已经开始输入")
   }
   func textViewShouldEndEditing(_ textView: UITextView) -> Bool {
        print("输入结束")
        return true
   }
   func textViewDidEndEditing(_ textView: UITextView) {
        print("已经输入结束")
   } 
   func textViewDidChange(_ textView: UITextView) {
        print("已经改变")
   }

UISwitch-开关按钮

let switch1 = UISwitch()
    //设置开始位置
    switch1.center = CGPoint(x:100, y:100)
    //设置默认值
    switch1.isOn = true
    //添加事件
    switch1.addTarget(self, action: #selector(ViewController.switchDidChange), for: .ValueChanged)

UISegmentedControl-分段选择器

//选项除了文字还可以是图片
    let items=["Hello" as AnyObject,"World" as AnyObject,UIImage(named: "star")!] as [AnyObject]
    let segmentedController=UISegmentedControl(items:items)
    segmentedController.center=self.view.center
    segmentedController.selectedSegmentIndex=1 //默认选中第二项
    segmentedController.addTarget(self, action: Selector("segmentDidchange:"),for: UIControlEvents.valueChanged)  //添加值改变监听
    self.view.addSubview(segmentedController)

定义点击事件方法

func segmentDidchange(segmented:UISegmentedControl){
        //获得选项的索引
        print(segmented.selectedSegmentIndex)
        //获得选择的文字
        print(segmented.titleForSegmentAtIndex(segmented.selectedSegmentIndex))
    }

选择器中选项的添加、删除与修改

//添加文字选项
   segmentedController.insertSegmentWithTitle("新增选项",atIndex:1,animated:true)
   //添加图片选项
   segmentedController.insertSegmentWithImage(UIImage(named:"icon")!,atIndex:1,animated: true)
   //移除选项
   segmentedController.removeSegmentAtIndex(1,animated:true)
   //修改选项颜色,包括图片
   segmentedController.tintColor=UIColor.blueColor()
   //修改选项文字
   segmentedController.setTitle("哎呦",forSegmentAtIndex:1)
   //修改选项图片
   segmentedController.setImage(UIImage(named:"icon"),forSegmentAtIndex:2)
   //修改选项内容偏移位置
   segmentedController.setContentOffset(CGSizeMake(10,7),forSegmentAtIndex:1)

UISlider-滑块

let slider=UISlider(frame:CGRectMake(0,0,300,50))
   slider.center=self.view.center
   slider.minimumValue=0  //最小值
   slider.maximumValue=1  //最大值
   slider.value=0.5  //当前默认值
   //设置滑块的值,同时有动画
   slider.setValue(0.8,animated:true)
   slider.continuous=false  //滑块滑动停止后才触发ValueChanged事件
   slider.addTarget(self,action:"sliderDidchange:", forControlEvents:UIControlEvents.ValueChanged)
   self.view.addSubview(slider)

UIProgressView-进度条

// 创建进度条
  var progressView=UIProgressView(progressViewStyle:UIProgressViewStyle.Default)
  progressView.center=self.view.center
  progressView.progress=0.5 //默认进度50%
  self.view.addSubview(progressView)
  //设置进度,同时有动画效果
  progressView.setProgress(0.8,animated:true)
  //改变进度条颜色
  progressView.progressTintColor=UIColor.greenColor()  //已有进度颜色
  progressView.trackTintColor=UIColor.blueColor()  //剩余进度颜色(即进度槽颜色)

UIStepper-微调器或叫步进器

super.viewDidLoad()
    stepper=UIStepper()
    stepper.center=self.view.center
    //设置stepper的范围与初始值
    stepper.maximumValue=10
    stepper.minimumValue=1
    stepper.value=5.5
    //设置每次增减的值
    stepper.stepValue=0.5
    //设置stepper可以按住不放来连续更改值
    stepper.continuous=true
    //设置stepper是否循环(到最大值时再增加数值从最小值开始)
    stepper.wraps=true
    stepper.addTarget(self,action:"stepperValueIschanged",
    forControlEvents: UIControlEvents.ValueChanged)
    label=UILabel(frame:CGRectMake(100,100,300,30))
    label.text = "当前值为:\(stepper.value)"

使用tintColor属性可以设置微调器的颜色。 而加减符号图标,背景图片,中间分割线图片都可以替换成自己图片

//用自定义的图片替换“-”和“+”
stepper.setDecrementImage(UIImage(named: "sub.png"),forState: UIControlState.Normal)
stepper.setIncrementImage(UIImage(named: "add.png"), forState: UIControlState.Normal)

 

posted @ 2017-10-14 11:19  乔那叔叔  阅读(706)  评论(0编辑  收藏  举报