UI开发基础和控件

来自视频课件: http://code4app.com/course/28-2954-3199

UIKit是一个提供了在IOS实现了图形,事件驱动程序的框架

UIView是视图的基类

UIViewController是视图控制器的基类

UIResponder表示是一个可以在屏幕上接受触摸事件的对象。

窗口(UIWindow)是视图的一个子类,窗口的主要功能,1,提供区域来显示视图,2将事件分发给视图。

UIKit的类图:



窗口和视图

窗口本身不具备任何可见的内容,它是对应用程序的视图提供了一个基本的容器。视图就是在你想要在窗口的某个部分显示的内容。可以是图像,文本等。视图还可以组织和管理其他视图。总体来讲,一样的都是视图树,都遵循组合模式。


每个应用程序至少需要一个窗口,通常窗口用UIWindow的实例来表示。注意UIWindow继承自UIView。

大多数IOS应用程序在生命周期内只有一个UIWindow。并且在应用程序的生命周期内,窗口跨越整个设备的主屏幕和应用程序的主nib文件被加载(或者以编程的方式被加载)。但是,如果应用程序支持外部显示器视频输出,它可以创建额外的窗口,以显示外部显示器的内容。所有其他的窗口由系统创建。


创建和配置UIWindow

通过xib来创建,通过mainwindow.xib文件加载进行实例化

//创建一个全屏的window
self.window = [[[UIWindow alloc] initWithFrame: [UIScreen mainScreen] bounds] autorelease];
//把viewController设置为window的根控制器
selft.window.rootViewController  = self.viewController;
//显示window
[self.window makeKeyAndVisible];

UIScreen对象可以充当IOS设备物理屏幕的替代者。

[UIScreen mainScreen] bounds]用来获取屏幕大小,解决一些尺寸适配的问题。


获取当前UIWindow级别

通过UIApplication获取keyWindow

keyWindow用来管理键盘和非触摸类的消息,并且只能有一个window是keyWindow。

UIWindow * keyWindow = [UIApplication shareApplication].keyWindow;

每个UIWindow配置windowLevel属性,分为3个级别,类似于窗口的z轴优先级,分别为:

UIWindowLevelAlert > UiWindowLevelStatusBar > UIWindowLevelNormal



视图UIView

视图,通常就是UIView的一个对象,表示屏幕上的一块矩形区域,同时处理该区域的绘制和触屏事件。

一个视图可以作为其他视图的父视图,来管理子视图的位置和大小。

视图结构和相关函数

CGPoint point = CGPointMake(x,y);//位置

CGSize size = CGSizeMake(width, height);//大小

CGRect rect = CGRectMake(x,y,width,height);//位置和大小



IOS坐标系统,左上角为原点。

每一个view的frame所用的坐标系是父视图的左上角为原点。

相对于frame,bounds是以ios系统坐标原点为起点,坐标为(0,0)

center,表示视图中心点所在的位置,此属性可以改变视图的位置。

当改变frame,bounds,center其中一个值时,另外两个值相应会变化。



Screens, Windows, and Views 创建可视化界面


类的继承关系




创建UIView

xib方式

NSBundle *bundle = [NSBundle mainBundle];
NSArray *arr  =  [bundle loadNibNamed:@"myView" 
						owner: self 
						options: nil];
UIView *myView = [arr objectAtIndex: 0];

代码方式

CGRect rect = CGRectMake(0, 0, 100, 100);
UIView *myView = [[UIView alloc] initWithFrame: rect];


UIView的常用方法

当调用addSubView的时候,会对其进行保留,理解为retain一个对象就可以,当调用removefromSuperview时候,会进行释放,也就是release。

1、添加视图
     insertSubview:atIndex:   //放在子视图数组的具体索引位置
     insertSubview:aboveSubview:   //某个子视图前面
     insertSubview:aboveSubview:   //某个子视图前面

2、重新排序和删除子视图
      [parentView exchangeSubviewAtIndex:i withSubviewAtIndex:j]//交换两个视图的位置
      bringSubviewToFront:和sendSubviewToBack://将子视图提前活置后
      [childView removeSuperview]//删除某个视图的子视图

3、视图回调
某个视图的层次一改变,该视图就会收到一次回调。
   a、调用addSubivew:成功后会给该视图发送didAddSubivew:回调,触发UIView的子类在心增视图时执行其他操作。
   b、didMoveToSuperview:会通知相关视图他们的上级视图已经变化。
   c、视图移动前会发出willMoveToSuperview:回调
   d、didMoveToWindow:回调和didMoveToSuperview:相似,从命名上能看出其区别。
   e、willMoveToWindow:在视图移动前发出的回调。
    f、willRemoveToSubview:回调通知父视图子视图即将被删除

UIView掌管直接屏幕绘图。他的drawRect:方法提供一种低级方式来直接绘制内容,允许使用Quartz 2D调用创建和显示任意元素,可将这两个元素结合起来共同构建具体、可操作的界面。


视图对象的清理

如果手动创建了一个视图,分配了任何内存,存储了任何对象的引用,都需要进行资源释放,必须实现dealloc方法。当某个对象引用基数为0,系统会调用其dealloc方法,去释放对象资源,切记不要手动调用dealloc方法。

-(void) dealloc
{
	//释放自定义对象
	[super dealloc];
}


UIView的可以实现几个基本的动画,平移,旋转,透明度设置,缩放,和android基本是一致的。


内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值