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

如何在Swift中创建自定义控件,第1张

如果你查看苹果的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中以便我们随时查看控件制作的进展程度。

打开ViewControllerswift替换如下:

import UIKitclass

ViewController: UIViewController {

let rangeSlider = RangeSlider(frame: CGRectZero)

override func viewDidLoad() {

superviewDidLoad()

rangeSliderbackgroundColor = UIColorredColor()

viewaddSubview(rangeSlider)

}

override func viewDidLayoutSubviews() {

let margin: CGFloat = 200

let width = viewboundswidth - 20 margin

rangeSliderframe = CGRect(x: margin, y: margin + topLayoutGuidelength,

width: width, height: 310)

}}

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

运行app;你将看到和下图一样的画面:

swift30 怎么获取当前view下的uibutton

你给每个按钮设置一个tag,然后在你自定义的方法中做如下 *** 作

- (void)_btnPressed:(id)sender

{

UIButton btn = (UIButton )sender;

switch(btntag){

case xxx:

// do your own work

break;

default: break;

}

}

////

你的写法很漂亮,在有很多button的时候就应该这么写,

我这么写是在button有各自的意义的时候,我们可以用一个enum来标明tag,如:

typdef MYBUTTON{

TEST_BTN = 0,

REAL_BTN,

XX_BTN,

YY_BTN

} M_BTN;

[btn settag: TEST_BTN];

switch M_BTN

case: XX_BTN

用户界面控件是许多应用的重要组成部分。使用这些控件,可以让用户查看应用的内容或与他们的应用进行交互。苹果提供了一个控件集,像 UITextField , UIButton 和UISwitch 。灵活使用这些工具箱中已经存在的控件,可以让你创建各种各样的用户界面

苹果提供了一套控件,例如 UITextField,UIButton,UISwitch。通过工具箱中的这些已有控件,我们可以创建各式各样的用户界面。 然而,有时候你希望界面做得稍微的与众不同,那么此时苹果提供的这些控件就无法满足你的需求。 自定义控件,除了是自己构建二外,与苹果提供的,没什么差别。也就是说,自定义控件不存在于 UIKit 框架。自定义控件跟苹果提供的标准控件一样,应该是通用,并且多功能的。你也会发现,互联网上有一些积极的开发者乐意分享他们自定义的控件。 本文中,你将实现一个自己的 RangeSlider 自定义控件。这个控件是一个两端都可以滑动的,也就是说,你可以通过该控件获得最小值和最大值。你将会接触到这样一些概念:对现有控件的扩展,设计和实现自定义控件的 API,甚至还能学到如何分享你的自定义控件到开发社区中。 注意:本文截稿时,我们还不会贴出关于 iOS 8 beta 版本的截图。所有文中涉及到的截图都是在iOS 8之前的版本中得到的,不过结果非常类似。 目录: 开始 Images vs CoreGraphics 添加默认的控件属性 添加交互逻辑 添加触摸处理 值改变的通知 结合 Core Graphics 对控件进行修改 处理控件属性的改变

以上就是关于如何在Swift中创建自定义控件全部的内容,包括:如何在Swift中创建自定义控件、swift3.0 怎么获取当前view下的uibutton、如何用Swift创建自定义iOS控件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9611262.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存