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

1、新建一个Empty Application,只选Use Automatic Reference Counting,Use Core Data和Include Unit Tests不选。

2、Command+N 新建文件,选Cocoa Touch UIViewController subclass,SubClass of UIViewController,勾选with XIB for user interface(当然你也可以再建)。我这输的名字是MainViewController,最终生成MainViewController.h MainViewController.m MainViewController.xib三个文件。

3、打开(前缀)AppDelegate.h,代码如下:

[objc] view plaincopy

#import <UIKit/UIKit.h>

#import "MainViewController.h"

@interface BIDAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window

@property (strong,nonatomic) MainViewController * controller

@end

AppDelegate.m,修改(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法:

[objc] view plaincopy

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]

// Override point for customization after application launch.

self.controller= [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]

UIView *mainView=self.controller.view

CGRect mainViewFrame=mainView.frame

mainViewFrame.origin.y+=[UIApplication sharedApplication].statusBarFrame.size.height

//将y座标移到状态栏下

mainView.frame=mainViewFrame

[self.window addSubview:mainView]

//载入

self.window.backgroundColor = [UIColor whiteColor]

[self.window makeKeyAndVisible]

return YES

}

4、随便在MainViewController.xib中添加个控件,运行测试。


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

原文地址: http://outofmemory.cn/bake/11741321.html

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

发表评论

登录后才能评论

评论列表(0条)

保存