UIControl

Target-Action

arget-Action Explained In Swift

1
2
3
4
let button = UIButton(type: .plain)
button.setTitle("Launch fireworks!", for: .normal)
//当.touchUpInside发生时,发送消息给self,执行#selector(fireworks)
button.addTarget(self, action: #selector(fireworks), for: .touchUpInside)
  • 将self作为参数传入button,这样button就有了当前实例的引用,就可以调用当前实例的函数

  • selector用来描述函数名

  • 为防止加入#selector导致代码凌乱,可以为Selector创建extension:

    1
    2
    3
    4
    fileprivate extension Selector {
    static let fireworks = #selector(Effects.fireworks)
    static let onButtonTapped = #selector(ViewController.onButtonTapped(_:))
    }
  • ios开发中使用target-action的地方:UIButton、UISwitch、NotificationCenter、Timer

1.UITextField

在界面中显示可编辑区域的对象

1.1 声明

1
class UITextField: UIControl

2.UILabel

把label加到界面上需要:

  1. 使用一个string或者attributed string表示内容
  2. 如果使用nonattributed string,要对label进行配置
  3. 设置自动布局规则来管理label的大小和位置
  4. 提供可获取信息和定位的string

2.1 界面属性

a)核心属性

textattributedText

  • 指定label的内容。
  • NSString对象赋值给text,把模式设为Plain,以统一的外观显示。
  • NSAttributedString 对象赋值给 attributedText,把模式设为Attributed,把选择的样式属性应用到文字,也可以使用More菜单来展示其他外观属性,可以单独控制部分文本。
  • 在运行时使用属性来获取该值。

Color

  • 控制label中的文字的颜色。
  • 在Plain模式中,指定整个label的颜色。
  • 在Attributed模式中,使用color cell设置指定文字的属性。

Font

  • 指定label中文字的字体。
  • 在Plain模式下,指定整个label的字体。
  • 在Attributed模式下,使用font panel指定 attributed string中的文字字体。

Alignment

  • 控制label中文字的水平对齐。
  • 可以选择 left, right, center, justified, 或者 natural。
  • 在Plain模式下,该属性影响整个label的内容。
  • 在Attributed模式下,可以单独控制每个段落的对齐。

numberOfLines

  • 指定label渲染文字的最大行数。
  • 设为0,会设为所需的行数

isEnabledisHighlighted

  • 都可以控制label的界面。
  • 选择Enabled时,文本变暗,表明处于非活跃状态。
  • 选择Highlighted 时,文本以高亮显示。

b)空间属性

baselineAdjustment

  • 当激活Autoshrink时,控制label中文本的垂直对齐。
  • 选择Align Baseline会保持对准baselines,因为字体会自动减小。
  • 选择Align Center会保持垂直中心对准。
  • 默认为None,会和文本边框顶部对齐。

lineBreakMode

  • 指定当文本一行比label边框长会发生什么
  • character wrap和word wrap换行常被用在多行文本,来决定从哪里开始段行。
  • 选择word wrap,会在单词之间断行;选择character wrap会在单词中间断行。
  • Truncate head, middle, tail常被用在单行文本,用于省略文本。

minimumScaleFactorallowsDefaultTighteningForTruncation

  • 决定label在截断前是否调整界面文本。
  • 选择Minimum Font Scale然后输入一个值,允许label减小字体大小来适用文本。
  • 使用Tighten Letter Spacing,允许label减小字体间的间距。

c)高级属性

highlightedTextColor

  • 决定文本选择后的颜色。

shadowColor

  • 指定文本投影在label上的颜色,默认为透明

shadowOffset

  • 控制投影的距离。
  • 只有在设置了shadowColor时才有效。

d)查看继承的属性:UIControl and UIView

2.2 自定义label界面

2.3 国际化

Internationalization and Localization Guide.

3.UIButton

添加按钮步骤:

  1. 创建时设置按钮类型
  2. 设置title为文本或者图片,设置大小
  3. 给按钮添加一个或者多个响应函数
  4. 设置Auto Layout调整按钮大小和位置
  5. 提供可访问性和 localized strings

3.1 响应点击

  • 当用户点击时,按钮使用 Target-Action设计模式来通知app。设计哪个事件会触发哪个函数。运行时,按钮会处理所有触发的事件并调用相应函数。

  • 使用addTarget(_:action:for:) 给按钮添加响应函数。函数签名可使用以下三种:

  • @objc func doSomething()
    @objc func doSomething(sender: UIButton)
    @objc func doSomething(sender: UIButton, forEvent event: UIEvent)

3.2 设置按钮外观

  • 按钮的类型决定了按钮的基本外观和行为。
  • 在创建时使用init(type:) 方法来指定类型。
  • 创建完成之后不能改变。
  • 最常用的类型是Custon和System。
  • 要配置按钮外观,请使用appearance proxy object。可以通过appearance()类方法获取app中的所有按钮的代理对象。

a)按钮状态

  • 五个状态:default,highlighted,focused,selected,disabled。
  • 在设置按钮时,要分别对每个状态指定属性。若有某个状态没有指定属性,他会有个默认的设置。
  • 特定情况也可以通过adjustsImageWhenHighlightedadjustsImageWhenDisabled等来改变默认属性

b)按钮内容

  • 按钮内容通常为文本或者图片。
  • 指定的内容用来配置按钮自身管理的UILabelUIImageView 对象。
  • 通过titleLabel or imageView可以获取或者修改对应的值。
  • 可以同时使用文本和图片配置按钮,也可配置背景图片。
  • 在设置按钮时必须对每个状态都指定title、image、appearance属性。
  • 如果有某个状态没有指定内容,按钮会使用与Default状态关联的值,还会添加适当的自定义。

c)着色

  • 通过tintColor属性指定按钮的着色。该属性会设置按钮文本和图片等颜色。
  • 若没有显示指定tint color,按钮会使用父视图的颜色。

d)边距

  • 使用insets来添加或者移除内容周围的空间。
  • 可以分别指定按钮的title边距(titleEdgeInsets),image边距(imageEdgeInsets),或者同时指定这两个的边距(contentEdgeInsets)。
  • 使用insets会影响使用Auto Layout的按钮的内容框。

3.3 属性

a)核心属性

buttonType

  • 按钮类型,决定了按钮的其他属性的默认设置。
  • 运行时不能更改

State Config

  • 状态选择器
  • 选择一个值之后,按钮属性的更改会被应用到指定的状态。

Title

  • 可以指定按钮的title为 plain string 或者 attributed string。

Title Font 和 Attributes

  • 设置title的字体和其他属性。
  • 设置选项取决于按钮的title是plain string 还是 attributed string。
  • plain string可以指定字体、文字颜色、阴影颜色。
  • attributed string可以指定对齐、文字方向、缩进、连字等。

Image

  • 按钮的前景图片。
  • 通常使用模版图片,可以使用自定义图片。

Background

  • 按钮的背景图片。

b)外观属性

ShadowOffset

  • 阴影的位移和行为。
  • 只会影响文本。

Drawing

  • 按钮的绘制行为

LineBreak

  • 按钮文本的断行选项。

c)边距属性

Edge

  • 可以单独指定按钮内容、文本、图片等每个边距。

Inset

0%