UIButton

UIButton

类总述


  为了响应用户的交互动作,UIButton 对象可以执行自定义的代码。当你按下按钮时,或选择一个已经获取焦点的按钮时,按钮就会执行任何绑定到它上面的动作。通过文本、或图片、或两者结合的方面表达按钮的意图。按钮的外观是可配置的,因此,你可以给按钮着色,或者为了匹配应用的设计,对按钮的标题进行格式化。可以使用程序动态的添加按钮,也可以使用 Interface Builder

概述


 


 

  按照以下的步骤在界面上添加一个按钮:

 

  • 在按钮创建时,为按钮设置类型

  • 提供一个文本标题或图片;根据内容,为按钮设置合适的尺寸

  • 给按钮连接一个或多个方法

  • 设置 Auto Layout 规则,用于在界面上管理按钮的尺寸和位置

  • 提供有用的信息和本地化的字符

  关于 view 基本行为的更多信息,请参见 View Programming Guide for iOS

响应按钮点击


  当用户点击按钮时,按钮使用 Target-Action 的方式通知应用。不会直接处理点击事件,而是给按钮分配一个动作方法,指定哪些事件可以触发这些方法的调用。在运行时,按钮会处理所有收到的点击事件,然后调用指定的方法进行响应。
  使用 addTarget(_: action: for:) 方法把按钮与动作方法连接起来,或者也可以在 Interface Builder 中创建这样的连接。动作方法的签名有三种形式,如列表1中所示。选择一种形式,然后提示响应按钮点击时的信息就可以了。
  列表1,按钮的动作方法

  1. @IBAction func dosomething(); 
  2. @IBAction func dosomething(sender: UIButton); 
  3. @IBAction func dosomething(sender: UIButton, forEvent event: UIEvent); 

配置按钮外观


  按钮的类型定义了按钮的外观和行为。在按钮创建时,使用 init(type:) 方法指定按钮的类型,或者,可以在故事板中进行设置。注意:按钮完成初始化后,样式不能被改变。最常用的按钮类型是:CustomSystem ,当然,其余的类型适用于某些场景。

注意:
 在应用中,要统一配置所有按钮的外观,需要使用
appearance proxy 对象。UIButton 类实现了
appearance() 方法,可以使用该方法获取应用中所有按钮的外观代理。

按钮状态


  按钮有五种定义了外观的状态:defaulthighlightedfocusedselecteddisabled。当往界面上添加按钮时,最初,按钮是默认状态,这也就意味着按钮是可用的,并且,用户还没和按钮发生交互。当用户与按钮发生交互时,按钮的状态就变成了其它的值。例如,当用户按下按钮,并持续了一段时间,那么,按钮就变成了高亮状态。

  不论是用代码生成的按钮,还是使用 interface Builder 创建的按钮,都需要为按钮的每一种状态指定单独的属性。在 interface Builder 中,使用 Attributes inspector 面板中的 State Config control 来选择合适的状态和配置其它属性。如果某种状态没有指定合适的值,那么,UIButton 类会提供一个合理的默认行为。例如,一个处于 disabled 状态的按钮,一般来说是灰色的,并且当它被点击时,并不会显示为高亮。

按钮内容


  按钮的内容由开发者指定的字符或图片组成。按钮的内容被用来配置由按钮本身管理的 UILabelUIImageView 对象。直接可以通过按钮的 titleLabelimageview 属性来获取值或对已经存在的值做改变。同时,UIButton 类也提供了配置字符和图片的快捷方法。

  通常,要么使用标题,要么使用图片来确定按钮的尺寸。按钮也可以有背景图片,背景图片会出现在内容的后面。可以为按钮既指定背景图片,又指定图片和标题,这样做的结果正如 图1 显示的那样,使用图中标明的属性,就能获取对应元素的值。

  图1:给按钮提供了标题和图片

        

  在设置按钮的内容时,必须为每一种状态单独地指定标题,图片和外观属性。如果某个状态下没有指定内容,那么按钮将会使用默认状态的值,并添加合适的自定制。例如,高亮状态下,如果没有提供自定义的图片,在按钮的默认图片上,将会绘制一个高亮。

着色


  使用 tiniColor 属性给按钮指定颜色。该属性设置了按钮图片和文本的颜色。如果没有显示地指定该属性的值,那么,按钮就会使用它父控件的 tintColor 值。

边界插图(Edge Insets)


  在 customsystem 类型的按钮上,使用 insets 可以添加或移除围绕在内容周围的空白。可以分别为标题(titleEdgeInsets)、图片(imageEdgeInsets)或标题与图片的整体(contentEdgeInsets)指定各自的 insets。如果设置了 insets,它会影响按钮的矩形,按钮的矩形被自动布局引擎(Auto Layout engine)用来检测按钮的位置。

原文地址:https://www.cnblogs.com/wchhuangya/p/5699186.html