如何在Swift中创建自定义控件

 我来答
周启萌
2016-08-05 · TA获得超过1152个赞
知道大有可为答主
回答量:1441
采纳率:86%
帮助的人:1717万
展开全部

 如果你查看苹果的UIKit参考手册,你会看到许多的控件像 UILabel 和 UIWebView 是直接继承于UIView的。尽管如此,还是有一些棘手的事情,像 UIButton 和UISwitch 是继承于 UIControl ,像如下的层级关系所示:

  注意:如果你想查看一个完整的UI组件类层级示意图,请阅读UIKit Framework Reference。

  UIControl 使用的是target-action pattern机制,这是一种用于通知用户信息改变的机制。 UIControl 也具有很多的属性来表示当前的控制状态。在这个自定义控件中将使用target-action pattern,所以 UIControl 将担当重要的起始点。

  在项目导航中右击CustomSliderExample组然后选择New File…,选择iOS/Source/Cocoa Touch Class模板点击Next。类取名为RangeSlider,在Subclass of中输入 UIControl 并且确保语言选择为Swift。点击下一步然后选择Create以使用默认位置来保存新类。

  尽管写代码是件漂亮的事,你可能想看看你的控件在实际屏幕上显示的效果来了解项目的进展!在你写其他代码之前,你可以先将控件添加到view controller中以便我们随时查看控件制作的进展程度。

  打开ViewController.swift替换如下:


 

  

  import UIKitclass

  

  ViewController: UIViewController {

  

  let rangeSlider = RangeSlider(frame: CGRectZero)

  

  

  override func viewDidLoad() {

  

  super.viewDidLoad()

  

  

  rangeSlider.backgroundColor = UIColor.redColor()

  

  view.addSubview(rangeSlider)

  

  }

  

  

  override func viewDidLayoutSubviews() {

  

  let margin: CGFloat = 20.0

  

  let width = view.bounds.width - 2.0 * margin

  

  rangeSlider.frame = CGRect(x: margin, y: margin + topLayoutGuide.length,

  

  width: width, height: 31.0)

  

  }}

  


  上面的代码简单的创建了一个指定过大小的全新控件的实例并且将实例添加到了视图内。控件的背景颜色已经被设置成红色这样可以使其和应用的背景形成鲜明的对比。如果你不将背景设置成红色,你的控件将不容易被找到,你将怀疑你的控件去哪了!:]

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式