尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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(关闭);}}这里调用事件的时候, 开关的状态是指改变后的状态
RELATED

相关推荐

Unity集成MQTT实现物联网通讯:从协议原理到实战避坑指南

Unity集成MQTT实现物联网通讯:从协议原理到实战避坑指南

1. 项目概述:为什么Unity需要MQTT?在Unity里折腾过网络通讯的开发者,大概都经历过几个阶段:从最开始的UnityWebRequest处理HTTP,到用WebSocket搞实时双工,再到后来项目里需要接入一堆传感器、硬件设备或者跨…

📅 2026/9/1 12:17:28
免费开源的WPS AI插件 察元AI助手:结构化流水线:模式集合与 JSON 候选提取

免费开源的WPS AI插件 察元AI助手:结构化流水线:模式集合与 JSON 候选提取

摘要assistantStructuredPipeline 用 REVISION_ASSISTANTS、TRANSFORM_ASSISTANTS 等集合区分拼写检查、翻译改写等是否走结构化 JSON。extractJsonCandidate 从模型输出中抽取代码块或首尾大括号片段。关键词JSON;schema;助手模式扩展阅读与维护提示本篇围绕「结构化流水线&am…

📅 2026/9/1 8:16:34
一次查 50 万行把老年代打爆:MyBatis 的 fetchSize 不生效,和 Executor 到 ResultSetHandler 的 5 段链路

一次查 50 万行把老年代打爆:MyBatis 的 fetchSize 不生效,和 Executor 到 ResultSetHandler 的 5 段链路

title: "一次查 50 万行把老年代打爆:MyBatis 的 fetchSize 不生效,和 Executor 到 ResultSetHandler 的 5 段链路" tags: [MyBatis, 源码分析, 性能优化, Java, 后端] category: 后端一次数据导出,把生产 JVM 干到 Full GC我们有一…

📅 2026/9/26 12:55:41
MORE NEWS

更多资讯

📰

DeepSeek大模型落地家具厂:RAG+Agent实现报价与客服自动化

简介:面向家具制造业管理者、数字化转型负责人及智能制造从业者,这份演示文稿系统阐述了AI与DeepSeek大模型在全产业链中的应用思路。资源为1个PPTX文件,压缩包仅428KB,内容覆盖设计、生产、供应链、销售服务、数据管理与决策支持…

📰

从@Scheduled到XXL-JOB:Spring Boot分布式定时任务迁移实战

如果你维护过一个跑了两年以上的Spring Boot服务,大概率见过这种场景:部署了两三个实例之后,到了每天凌晨零点,日志里同一个业务方法连着执行好几遍,数据库里多出一批重复对账记录,或者优惠券被同一个用户领…

📰

DeepSeek协同求解器:实现可落地的APS智能排产

简介:面向生产制造场景的DEEPSEEK智能排产APS落地方案PPT,系统讲解如何用数据算法替代人工经验排产,适合计划排产工程师、生产运营管理者以及推进工厂智能化转型的团队参考。方案覆盖智能排产核心价值、核心算法架构、行业应用挑战、传统调度…

📰

用AbortController、Pointer Events和CustomEvent重写前端事件处理

1. 先想清楚:事件代码为什么越写越臃肿 前阵子帮朋友救火一个老项目,页面只有三个交互:弹窗开关、侧边栏拖拽、滚动加载。听起来不难对吧?但代码里有一套 mousedown/mouseup ,后面又补了一套 touchstart/touchend …

📰

OpenClaw浏览器操控实战:AI代理如何颠覆传统自动化

1. 项目概述 1.1 这个项目到底解决什么问题 OpenClaw 这个词最近在圈子里频繁刷屏。简单说,它是一套开源的个人 AI 代理方案,用日常聊天的方式和机器交互,让 AI 替你执行真的操作——打开网页、点击按钮、输入文本、提取数据、操作文件&…

📰

YOLOv11实战指南:环境配置、推理保存与边缘部署全解析

简介:YOLOv11与视觉大模型知识分享文档是一份面向目标检测算法研究者和开发者的技术参考,内容兼具理论深度与实战视角,系统梳理了目标检测框架的两阶段与单阶段分类、YOLO系列从初代到最新版本的演进历程,以及特征金字塔网络、骨干…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬