当前位置: 首页 > news >正文

UI----1

OC UI (1)

一、UILabel

UILabel是可以在屏幕上显示文字的一种视图

代码演示:

-(void)creatUI{//定义并创建UILabel对象//UILabel是可以显示在屏幕,可以显示文字的UI视图UILabel*label=[[UILabel alloc]init];//显示文字label.text=@"同地不同时";label.textColor=[UIColor blackColor];//设定label位置label.frame=CGRectMake(100,100,200,100);//设置背景颜色label.backgroundColor=[UIColor greenColor];//self.view.backgroundColor = [UIColor greenColor];label.font=[UIFont systemFontOfSize:20];//将label显示到屏幕[self.view addSubview:label];//设置阴影的颜色label.shadowColor=[UIColor redColor];label.shadowOffset=CGSizeMake(3,1);//设置文字对齐,默认靠左对齐label.textAlignment=NSTextAlignmentCenter;//自动换行,默认为1,0为自动换行label.numberOfLines=0;}-(void)viewDidLoad{[superviewDidLoad];[selfcreatUI];}

二、UIButton

这是一个图片按钮

  1. 创建普通按钮

    -(void)createUIRectButton{//创建一个btn对象//圆角类型UIButton*btn=[UIButton buttonWithType:UIButtonTypeRoundedRect];//设置位置btn.frame=CGRectMake(100,100,100,40);//按钮文字内容与状态[btn setTitle:@"按钮01"forState:UIControlStateNormal];[btn setTitle:@"按钮按下"forState:UIControlStateHighlighted];//背景颜色btn.backgroundColor=[UIColor greenColor];//设置文字颜色//p1:颜色//p2:状态[btn setTitleColor:[UIColor yellowColor]forState:UIControlStateNormal];//设置风格颜色,也是改变文字颜色,优先级弱于上边[btn setTintColor:[UIColor blackColor]];//设置字体大小btn.titleLabel.font=[UIFont systemFontOfSize:18];//添加到视图中并显示[self.view addSubview:btn];}
  2. 创建一个自定义按钮

    -(void)creatImageBtn{//创建一个自定义类型的btnUIButton*btnImage=[UIButton buttonWithType:UIButtonTypeCustom];btnImage.frame=CGRectMake(100,200,300,300);UIImage*btn1=[UIImage imageNamed:@"btn01.jpg"];UIImage*btn2=[UIImage imageNamed:@"btn02.jpg"];//图片名要确保一致[btnImage setImage:btn1 forState:UIControlStateHighlighted];//按下后的图片[btnImage setImage:btn2 forState:UIControlStateNormal];//初始图片[self.view addSubview:btnImage];}
    • 自定义按钮的图片要拖进Assets文件
  3. UIButton事件处理

    -(void)creatBt{UIButton*btn=[UIButton buttonWithType:UIButtonTypeRoundedRect];btn.frame=CGRectMake(100,100,80,40);[btn setTitle:@"按钮"forState:UIControlStateNormal];btn.backgroundColor=[UIColor greenColor];//向按钮添加事件函数//p1:谁来实现事件函数,实现对象就是谁;p2:当按钮满足p3事件类型调用函数;p3:事件处理函数类型//UIControlEventTouchUpInside:手指离开屏幕时手指在的位置在按钮范围内触发事件函数[btn addTarget:selfaction:@selector(pressBtn:)forControlEvents:UIControlEventTouchUpInside];UIButton*btn2=[UIButton buttonWithType:UIButtonTypeRoundedRect];btn2.frame=CGRectMake(200,200,80,40);[btn2 setTitle:@"按钮2"forState:UIControlStateNormal];btn2.backgroundColor=[UIColor redColor];[btn2 addTarget:selfaction:@selector(pressBtn:)forControlEvents:UIControlEventTouchUpInside];btn.tag=101;btn2.tag=102;[self.view addSubview:btn];[self.view addSubview:btn2];}-(void)pressBtn:(UIButton*)btn{if(btn.tag==101){NSLog(@"btn按钮被按下");}if(btn.tag==102){NSLog(@"btn2按钮被按下");}}-(void)viewDidLoad{[superviewDidLoad];[selfcreatBt];// Do any additional setup after loading the view.}

三、UIView

  1. UIView基础

    -(void)viewDidLoad{[superviewDidLoad];UIView*view=[[UIView alloc]init];view.frame=CGRectMake(100,100,100,200);view.backgroundColor=[UIColor orangeColor];//将新建的视图添加到父视图上[self.view addSubview:view];//是否隐藏视图对象//YES:不显示//NO:显示view.hidden=NO;//设置视图透明度//alpha = 1不透明;= 0 透明;0.5半透明;view.alpha=1;self.view.backgroundColor=[UIColor blueColor];//设置是否不透明//NO:透明//YES:不透明view.opaque=NO;//将自己从父亲视图删除掉//1:从父亲视图的管理中删除//2:不会显示在屏幕//[view removeFromSuperview];}
  2. UIView层级关系

    -(void)viewDidLoad{[superviewDidLoad];UIView*view1=[[UIView alloc]init];view1.frame=CGRectMake(100,100,150,150);view1.backgroundColor=[UIColor blueColor];UIView*view2=[[UIView alloc]init];view2.frame=CGRectMake(125,125,150,150);view2.backgroundColor=[UIColor greenColor];UIView*view3=[[UIView alloc]init];view3.frame=CGRectMake(150,150,150,150);view3.backgroundColor=[UIColor redColor];[self.view addSubview:view1];[self.view addSubview:view2];[self.view addSubview:view3];[self.view bringSubviewToFront:view1];//将view1移动到最上层[self.view sendSubviewToBack:view3];//将view3移动到最下层//subviews管理所有self.view的子视图的数组UIView*viewFront=self.view.subviews[2];UIView*viewBack=self.view.subviews[0];if(viewBack==view3){NSLog(@"==");}else{NSLog(@"不相等");}}

    值得一提的是bringSubviewToFront方法时移动了视图在数组中的位置

四、UIWindow

UIWindow 是所有视图的顶级容器,承载整个 App 界面;

-(void)scene:(UIScene*)scene willConnectToSession:(UISceneSession*)session options:(UISceneConnectionOptions*)connectionOptions{self.window.rootViewController=[[UIViewController alloc]init];//创建根视图控制器self.window.backgroundColor=[UIColor blueColor];UIView*view=[[UIView alloc]initWithFrame:CGRectMake(100,100,150,150)];view.backgroundColor=[UIColor orangeColor];UIView*backview=[[UIView alloc]initWithFrame:CGRectMake(200,120,240,360)];backview.backgroundColor=[UIColor redColor];//子视图的坐标是参照父亲视图的坐标系//当父亲视图移动的时候,所有的子视图会相对移动[backview addSubview:view];[self.window addSubview:backview];[self.window makeKeyAndVisible];//显示根视图NSLog(@"%@\n, %@\n, %@\n",view.window,backview.window,self.window);}

五、UIViewController

一个控制器 = 一个独立页面,APP 里的每一页基本都对应一个UIViewController

常用生命周期方法(执行顺序)

  1. init/initWithCoder:

    控制器初始化,只走一次

  2. viewDidLoad

    视图加载完成后调用,只走一次

    用来:初始化 UI、网络请求、设置数据

  3. viewWillAppear:

    页面即将显示时调用(每次出现都会走)

  4. viewDidAppear:

    页面已经显示

  5. viewWillDisappear:

    页面即将消失

  6. viewDidDisappear:

    页面已经消失

//// View2.m// UIViewController//// Created by luzi on 2026/4/2.//#import"View2.h"@interfaceView2()@end@implementationView2-(void)touchesBegan:(NSSet<UITouch*>*)touches withEvent:(UIEvent*)event{//使当前的控制器消失掉[selfdismissViewControllerAnimated:YES completion:nil];}-(void)viewDidLoad{[superviewDidLoad];// Do any additional setup after loading the view.self.view.backgroundColor=[UIColor orangeColor];}-(void)viewWillDisappear:(BOOL)animated{NSLog(@"%@ 视图即将消失",[selfclass]);}-(void)viewDidDisappear:(BOOL)animated{NSLog(@"%@ 视图已消失",[selfclass]);}-(void)viewDidAppear:(BOOL)animated{NSLog(@"%@ 视图已显示",[selfclass]);}-(void)viewWillAppear:(BOOL)animated{NSLog(@"%@ 视图即将显示",[selfclass]);}/* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */@end
//// ViewController.m// UIViewController//// Created by luzi on 2026/4/2.//#import"ViewController.h"#import"View2.h"@interfaceViewController()@end@implementationViewController-(void)touchesBegan:(NSSet<UITouch*>*)touches withEvent:(UIEvent*)event{View2*vc=[[View2 alloc]init];[selfpresentViewController:vc animated:YES completion:nil];}//第一次加载视图时调用-(void)viewDidLoad{[superviewDidLoad];// Do any additional setup after loading the view.self.view.backgroundColor=[UIColor greenColor];NSLog(@"viewDidLoad第一次加载视图");}//视图控制器的视图即将显示时,参数:是否用动画切换-(void)viewWillAppear:(BOOL)animated{NSLog(@"视图即将显示");}//视图即将消失//当前状态视图还是显示在屏幕上-(void)viewWillDisappear:(BOOL)animated{NSLog(@"视图即将消失");}//-(void)viewDidAppear:(BOOL)animated{NSLog(@"视图已经出现");}-(void)viewDidDisappear:(BOOL)animated{NSLog(@"视图已经消失");}@end
http://www.jsqmd.com/news/600462/

相关文章:

  • 2026年4月吡咯喹啉醌肽饮推荐指南 - 优质品牌商家
  • 2026铸铁雨篦优质供应商推荐榜 高性价比选型 - 优质品牌商家
  • StructBERT-Large中文复述识别效果展示:中文机器翻译后编辑(MTPE)质量语义评估
  • MiniCPM-V-2_6高可信推理:Object HalBench幻觉率低于GPT-4o实测
  • 崇左本地人推荐的越南火锅店必吃榜
  • 掌握Makefile:从基础到高级的自动化构建指南,依托Java和百度地图实现长沙市热门道路与景点实时路况检索的实践探索。
  • 计算机网络:从基础到未来趋势,从0死磕全栈之Next.js 中间件(Middleware)详解与实战。
  • 2026年降AI工具价格全面对比:哪款最便宜还好用
  • DAO(去中心化自治组织)初探
  • WPF开源Office控件库全解析,利用css的动画效果制作轮播图。
  • DAMO-YOLO目标检测环境搭建DAMO-YOLO数据集代训练DAMO-YOLO代码改进更新可搭建windows系统和ubuntu系统的环境,搭建完直接可用可训练任意目标检测的coco格式数
  • 操作系统常见问题
  • (云知识)云平台,云服务,,
  • 微型载货汽车盘式制动器设计【毕业论文+cad图纸+开题报告+任务书……】
  • AIGC检测能识别哪些AI工具生成的内容:检测边界解析
  • 崇左便宜的饭店本地人推荐
  • 别只盯着server.log了!Kafka Controller日志与GC日志里的“宝藏”与“陷阱”
  • 从零配置上网行为管理:H3C AC本地认证与第三方AAA服务器切换指南
  • 城通网盘直链解析:三步实现免费高速下载的完整方案
  • OpenClaw跨技能协作:gemma-3-12b-it协调多个模块完成复杂项目
  • OpenClaw多任务管道:Phi-3-mini-128k-instruct串联处理复杂工作流
  • 开源鸿蒙跨平台Flutter开发:基于 CustomPaint 的高刷心电图 (ECG) 渲染引擎设计-临床体征实时监测终端
  • with open方法详解
  • OpenClaw+百川2-13B-4bits量化版:低成本搭建个人AI助手全流程
  • 崇左大新县一带,有没有本地人强烈推荐的美食老店
  • PLY格式驱动3D视觉检测革命,常规可见光相机在工业视觉检测中的应用。
  • 【数字医院医疗合集】1000余份AI大模型赋能数字医院医疗、数字医共体、智慧医联体、区域医疗、医疗质控、大健康方案合集(PPT+WORD+PDF)
  • 2026年兰州优质补习学校推荐榜:甘肃高考复读学校/甘肃高考文化课冲刺集训/甘肃高考补习学校/选择指南 - 优质品牌商家
  • Django UI扩展全攻略:打造炫酷管理界面,【面试】Kafka / RabbitMQ / ActiveMQ。
  • Mac开发者必备:OpenClaw本地调试Qwen3-32B镜像的3个关键步骤