如何在Swift中创建自定义控件
1个回答
展开全部
用户界面控件是许多应用的重要组成部分。使用这些控件,可以让用户查看应用的内容或与他们的应用进行交互。苹果提供了一个控件集,像 UITextField , UIButton 和UISwitch 。灵活使用这些工具箱中已经存在的控件,可以让你创建各种各样的用户界面。
但是,有的时候你可能需要做一些与众不同的事情;库中的控件已经不够用了。
自定义控件只不过是你自己创建的控件;也就是一个不来自于UIKit框架的控件。自定义控件,就像标准控件一样,应该具有通用和可定制的特性。而且,你会找到一个积极且充满活力的开发者社区喜欢分享他们的自定义控件。
在这个教程里,你将实现你自己的RangeSlider控件。这个控件就像一个双头滑块,可以用来选择最小和最大值。你会接触到关于如何扩展已经存在控件的思想,然后设计和实现你的控件API,甚至在开发者社区中共享你的控件。
开始我们的自定义之旅吧!
注意 :在我们制作教程时,iOS 8仍处於测试阶段,所以我们不能给他截图。所有的截图都取自之前的iOS版本,但你的实际运行结果是没有差别的。
开始的工作
。这个应用允许用户过滤搜索结果,来将搜索结果控制在一定的价格范围内。
你可以提供一个呈现出一对 UISlider 控件的交互界面,一个设置最低价格,另一个设置最高价格。尽管如此,这个交互界面不能真正帮助使用者形象的了解价格范围。如果设计成一个滑动条和连个滑动钮,这样可以更好的表达出他们想要搜索的价格高低范围。
你可以子类化 UIView 来创建一个范围滑动器,并且创建一个定制的视图来显示价格区间。这对于你的app是好用的,但如果将他用在其他类型的app上那就是一种煎熬。
让这个新的自定义组件变的更通用将会是个好的想法,这样他就可以在任何需要他的环境内使用。这是自定义控件的精髓所在。
启动Xcode。选择 File/New/Project ,然后选择 iOS/Application/Single View Application 模板,点击 Next 。在接下来的屏幕里,在product name中输入CustomSliderExample ,选择你想使用的 Organization Name 和 Organization Identifier ,确定 Swift 语言被选中, iPhone 被选为 Device , Use Core Data 没有被选中。
最后选择一个保存路径,然后点击 Create 。
我们要做的第一个决策就是通过对一个已经存在的控件进行继承或扩展来实现新的控件。
为了在现有的UI上使用,你的控件必须继承于 UIView 。
如果你查看苹果的 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中以便我们随时查看控件制作的进展程度
但是,有的时候你可能需要做一些与众不同的事情;库中的控件已经不够用了。
自定义控件只不过是你自己创建的控件;也就是一个不来自于UIKit框架的控件。自定义控件,就像标准控件一样,应该具有通用和可定制的特性。而且,你会找到一个积极且充满活力的开发者社区喜欢分享他们的自定义控件。
在这个教程里,你将实现你自己的RangeSlider控件。这个控件就像一个双头滑块,可以用来选择最小和最大值。你会接触到关于如何扩展已经存在控件的思想,然后设计和实现你的控件API,甚至在开发者社区中共享你的控件。
开始我们的自定义之旅吧!
注意 :在我们制作教程时,iOS 8仍处於测试阶段,所以我们不能给他截图。所有的截图都取自之前的iOS版本,但你的实际运行结果是没有差别的。
开始的工作
。这个应用允许用户过滤搜索结果,来将搜索结果控制在一定的价格范围内。
你可以提供一个呈现出一对 UISlider 控件的交互界面,一个设置最低价格,另一个设置最高价格。尽管如此,这个交互界面不能真正帮助使用者形象的了解价格范围。如果设计成一个滑动条和连个滑动钮,这样可以更好的表达出他们想要搜索的价格高低范围。
你可以子类化 UIView 来创建一个范围滑动器,并且创建一个定制的视图来显示价格区间。这对于你的app是好用的,但如果将他用在其他类型的app上那就是一种煎熬。
让这个新的自定义组件变的更通用将会是个好的想法,这样他就可以在任何需要他的环境内使用。这是自定义控件的精髓所在。
启动Xcode。选择 File/New/Project ,然后选择 iOS/Application/Single View Application 模板,点击 Next 。在接下来的屏幕里,在product name中输入CustomSliderExample ,选择你想使用的 Organization Name 和 Organization Identifier ,确定 Swift 语言被选中, iPhone 被选为 Device , Use Core Data 没有被选中。
最后选择一个保存路径,然后点击 Create 。
我们要做的第一个决策就是通过对一个已经存在的控件进行继承或扩展来实现新的控件。
为了在现有的UI上使用,你的控件必须继承于 UIView 。
如果你查看苹果的 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中以便我们随时查看控件制作的进展程度
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询