美文网首页swiftSwiftSwift编程
Swift基础之常用的UI控件(一)

Swift基础之常用的UI控件(一)

作者: 大脸猫121 | 来源:发表于2016-06-14 11:27 被阅读6021次

    有一定iOS基础的小伙伴们一定知道,在开发的过程中UI控件是必不可少的。那么在swift中UI控件都是怎么创建和使用的呢?
    在这篇文章中我会介绍有关UILabel、UIButton、UITextField、UISwitch、UISlider、UIToolbar、UIProgressView和UIAlertView等常用的控件的使用。

    一、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、UITextField、UISwitch、UISlider、UIToolbar、UIProgressView和UIAlertView等常用的控件的使用哦。谢谢大家来看我的文章,请多指教哦。😁

    相关文章

      网友评论

      • Maj_sunshine:按钮的 isEnabled 是什么意思 百度真难。。。
        大脸猫121:简单的说就是能不能点击,默认是true(允许点击,点击后调用点击事件),设置成false就是不能点击(点击后没有响应,不会调用点击事件)
      • UILabelkell:现在 的哪个frame 你哪样写不行了
        大脸猫121:@唐基林 snapkit 已经更新了,可以用的
        UILabelkell:@萌小猫121 是的呀 3.0 的写法变了 好多。刚用了哪个写了 个dome 我直接用 Snapkit
        大脸猫121:@唐基林 嗯嗯,swift 3.0变成了没有make的那种,有时间我会改成最新版本的:blush:
      • L柠_檬:很好 有时间学习下

      本文标题:Swift基础之常用的UI控件(一)

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