ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

UI学习: UI 的初步了解(2)

UI学习: UI 的初步了解(2) 文章目录main.mAppDelegate.mUIController 控制器定时器和视图移动通过按钮来调用触发定时器事件函数, 创建定时器UISwitchmain.m整个APP程序的入口是main 函数整个App程序的主函数, 入口函数intmain(intargc,char*argv[]){NSString*appDelegateClassName;autoreleasepool{// Setup code that might create autoreleased objects goes here.appDelegateClassNameNSStringFromClass([AppDelegate class]);}returnUIApplicationMain(argc,argv,nil,appDelegateClassName);}UIKit框架结构的启动函数参数一: argc: 启动时带有参数的个数参数二: argv[] 参数列表参数三: 要求传入一个主框架类对象, 如果为nil, 系统会自动用默认的框架作为主框架类名参数四: 主框架的代理类对象名字returnUIApplicationMain(argc,argv,nil,appDelegateClassName);AppDelegate.m当程序框架初始化成功后调用一下函数, 用来初始化整个框架结构, 是整个程序iOS开发工程师的入口函数-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions{// Override point for customization after application launch.returnYES;}创建一个视图对象UIView* view [[UIView alloc] initWithFrame: [UIScreen mainScreen].bounds];UIScreen: 表示屏幕硬件类mainScreen. 获取主屏幕的信息 (当前手机屏的大小)UIController 控制器所有的视图控制器都是继承于 官方的UIViewController当视图控制器第一次加载视图时, 调用viewDidLoad方法, 功能是初始化视图, 初始化资源// 第一次程序加载视图时调用-(void)viewDidLoad{[superviewDidLoad];NSLog(第一次加载视图);}当视图即将显示时候, 会调用viewWillAppear: (BOOL)animated方法后面的BOOL类型参数表示是用动画切换后显示// 当视图即将调用的时候, 会调用此函数-(void)viewWillAppear:(BOOL)animated{NSLog(视图即将显示);}当视图已经显示到屏幕后的瞬间调用viewDidAppear: (BOOL)animated函数参数: 表示是否用动画切换显示的当前状态已经显示到屏幕// 当视图已经显示在屏幕后的瞬间调用吃函数-(void)viewDidAppear:(BOOL)animated{NSLog(视图已经显示在屏幕);}当视图即将消失的时候, 会调用viewWillDisappear: (BOOL)animated方法后面的BOOL类型参数表示是用动画切换后消失当前的状态: 视图还是显示在屏幕上的// 当视图即将消失的时候, 会调用此函数-(void)viewWillDisappear:(BOOL)animated{NSLog(视图即将消失);}当视图已经消失的时候, 会调用viewDidDisappear: (BOOL)animated方法后面的BOOL类型参数表示是否动画切换显示的当前的状态: 视图已经从屏幕上消失// 当视图已经消失的时候, 会调用此函数-(void)viewDisappear:(BOOL)animated{NSLog(视图已经消失);}当系统内存过低时, 会发起警告信息, 同时调用didReceiveMemoryWarning方法-(void)didReceiveMemoryWarning{[superdidReceiveMenoryWarning];NSLog(内存过低);}定时器和视图移动NSTimmer定时器对象可以在每隔固定时间发送一个消息, 通过此消息来调用相应的时间函数, 可以通过此函数在固定时间段来发送一个根据时间间隔的的任务通过按钮来调用触发定时器设置一个定时器对象property(nonatomic,strong)NSTimmer*timerView;首先来创建一个按钮UIButton*btn[UIButton buttonWithType:UIButtonTypeSystem];btn.frameCGRectMake(100,200,200,80);[btn setTitle:启动定时器forState:UIControlStateNormal];btn.backgroundColor[UIColor redColor];btn.titleLabel.font[UIFont systemFontOfSize:24];给按钮设置时间来触发定时器[btn addTarget:selfaction:selector(pressStart)forControlEvents:UIControlEventTouchUpInside];事件函数, 创建定时器-(void)pressStart{if(_timerViewnil){_timerView[NSTimer scheduledTimerWithTimeInterval:0.2target:selfselector:selector(updateTimer:)userInfo:xinyanrepeats:YES];}}用[NSTimer scheduleedTimerWithTimeInterval: targer: selector: userInfo: repeats:]方法创建了一个每隔0.2 秒重复触发的定时器每次触发时调用self的timerFired:方法参数为 NSString类型的 “xinyan” , 可以重复调用的定时器这里创建定时器的时候需要进行判空处理, 如果不判空, 就会导致创建定时器覆盖原先的定时器, 导致原先的定时器就无法关闭.使用NSTimer类方法创建一个定时器并启动这个定时器(NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)intervaltarget:(id)targetselector:(SEL)selectoruserInfo:(nullable id)userInforepeats:(BOOL)repeats;参数说明:p1: 每隔多长时间调用定时器函数 (以秒为单位)p2: 表示实现定时器函数的对象 (指针)p3: 定时器函数对象p4: 可以传定时器函数中一个参数, 无参数可以传:nilp5: 定时器是否重复YES: 重复,NO: 只完成一次返回值为一个新建好的定时器对象参数类型说明intervalNSTimeInterval触发间隔单位秒targetid接收消息的对象通常是selfselectorSEL定时器触发时调用的方法userInfoid传给回调的额外信息不需要传nilrepeatsBOOLYES重复触发NO只触发一次在启动定时器之后,若定时器的repeats参数为YES; 就会一直调用事件, 要想要停止, 就需要废除定时器.与创建定时器一样, 同样设置一个按钮, 通过事件调用来废除已有的定时器-(void)pressStop{if(_timerView!nil){[_timerView invalidate];_timerViewnil;}}这里在废除定时器的时候, 要进行置空处理, 否则在重新启动定时器的时候, 会因为定时器不为空从而不会创建新的定时器通过定时器调用事件来实现视图的移动UIView*view[[UIView alloc]init];view.backgroundColor[UIColor systemOrangeColor];view.tag101;创建一个UIView 对象, 加入的到当前的视图然后通过定时器调用事件改变UIView 的坐标, 来实现UIView 的移动效果-(void)updateTimer:(NSTimer*)timer{NSLog(hello, %,timer.userInfo);UIView*view[self.view viewWithTag:101];view.frameCGRectMake(view.frame.origin.x5,view.frame.origin.y5,60,60);}UISwitch创建注意UISwitch 大小固定设置 frame 的宽高无效UISwitch*mySwitch[[UISwitch alloc]initWithFrame:CGRectMake(100,100,0,0)];[self.view addSubview:mySwitch];常用属性// 设置/获取开关状态mySwitch.onYES;BOOL statemySwitch.isOn;// 带动画切换状态[mySwitch setOn:YES animated:YES];// 开启时的颜色默认绿色mySwitch.onTintColor[UIColor blueColor];// 关闭时的背景色mySwitch.tintColor[UIColor redColor];// 圆形滑块颜色mySwitch.thumbTintColor[UIColor whiteColor];通过开关的状态来调用事件// 添加事件[mySwitch addTarget:selfaction:selector(switchChanged:)forControlEvents:UIControlEventValueChanged];-(void)switchChanged:(UISwitch*)sender{NSLog(开关的状态发生变化);if(sender.isOn){NSLog(开启);}else{NSLog(关闭);}}这里调用事件的时候, 开关的状态是指改变后的状态
返回列表