UIView UIViewController

简介: --------------------------------------------------------------------------------UIViewController---------------------------...

--------------------------------------------------------------------------------UIViewController--------------------------------------------------------------------------------

1:视图加载完成显示出来以后调用

-(void)viewDidAppear:(BOOL)animated
{
    NSLog(@"视图加载完成显示出来以后调用");
}

2:视图卸载完成以后调用

-(void)viewDidDisappear:(BOOL)animated
{
    NSLog(@"视图卸载完成以后调用");
}
3:视图准备加载以后调用

-(void)viewWillAppear:(BOOL)animated
{
    NSLog(@"视图准备加载以后调用");
}

4:视图准备卸载以后调用

-(void)viewWillDisappear:(BOOL)animated
{
    NSLog(@"视图准备卸载以后调用");
}

5:在程序第一次启动时会加载UIWindow, 此时不要viewDidLoad执行 其他控制器视图的切换函数,因为这样做是没有任何效果的.

如果一定需要:可以在 viewDidAppear 里面执行控制器切换功能.

[self presentModalViewController:bookTabBae animated:NO];

6: 判断ViewController是否已经 执行过viewDidLoad 的方法

[self isViewLoaded]


7:关于 viewDidLoad

ViewController 在实例化以后是不会立刻执行viewDidLoad方法 

但是如果触动了与 VIewController 相连接的View 的代码,那么viewDidLoad 就会立刻执行.

立刻改变View 的背景颜色,  将View addSubView 到 其他的地方等,都会触发.


--------------------------------------------------------------------------------UIViewController--------------------------------------------------------------------------------

--------------------------------------------------------------------------------UIView--------------------------------------------------------------------------------


1: 设置指定的View 到顶端

[self.superview bringSubviewToFront:self];

2: 设置指定的View 到底部

[self.superview sendSubviewToBack:self];

3: 将View自己给删除掉

[self removeFromSuperview];

4:View坐标(CGPoint)转换之 convertPoint toView 详细解释

CGPoint point1 = [self.view2 convertPoint:self.btn.frame.origin toView:self.view1];

注: 针对self.view2 中 指定的某个 CGPoint 坐标系 如果填充到 self.view1 视图中时, 那么在self.view1中正确的CGPoint 坐标系 应该是多少?

      这个方法的目的是保证给定的坐标系在显示到其他View视图时, 其原本坐标系的显示效果和转换后的显示效果保持一致.如下图所示:

      图中的按钮要在不同的View视图显示时,又需要保证显示的位置不管在哪个View时 看起来都是一致. 那么就可以用到此方法获取的正确的坐标

      


CGPoint point = [self convertPoint:_songIconImageButtonOriginalRect.origin fromView:self.songDetailsContianerView];
NSLog(@"%@ %@",NSStringFromCGPoint(point),NSStringFromCGPoint(_songIconImageButtonOriginalRect.origin));

自己领悟吧..唉~



5:关于视图自适应调整方面的说明和使用

如果视图的autoresizesSubviews属性声明被设置为YES,则其子视图会根据autoresizingMask属性的值自动进行尺寸调整。

自动尺寸调整掩码

描述

UIViewAutoresizingNone

这个常量如果被设置,视图将不进行自动尺寸调整。

UIViewAutoresizingFlexibleHeight

这个常量如果被设置,视图的高度将和父视图的高度一起成比例变化。否则,视图的高度将保持不变。

UIViewAutoresizingFlexibleWidth

这个常量如果被设置,视图的宽度将和父视图的宽度一起成比例变化。否则,视图的宽度将保持不变。

UIViewAutoresizingFlexibleLeftMargin

这个常量如果被设置,视图的左边界将随着父视图宽度的变化而按比例进行调整。否则,视图和其父视图的左边界的相对位置将保持不变。

UIViewAutoresizingFlexibleRightMargin

这个常量如果被设置,视图的右边界将随着父视图宽度的变化而按比例进行调整。否则,视图和其父视图的右边界的相对位置将保持不变。

UIViewAutoresizingFlexibleBottomMargin

这个常量如果被设置,视图的底边界将随着父视图高度的变化而按比例进行调整。否则,视图和其父视图的底边界的相对位置将保持不变。

UIViewAutoresizingFlexibleTopMargin

这个常量如果被设置,视图的上边界将随着父视图高度的变化而按比例进行调整。否则,视图和其父视图的上边界的相对位置将保持不变。


//对父视图设置 允许子视图自适应父视图宽高成长 默认是YES
parentView.autoresizesSubviews=YES;
//对子视图设置适应父视图的方式. 见上图
childrenView.autoresizingMask= (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);


6:通过设置View 的 BackGround 实现背景图片的设置

[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"btn_nofocue02"]]];

注:复制图片原大小的方式,平铺开来,效果如下:



7:关于exclusiveTouch(参考:touchbegan 单个手指的识别----UIView 的exclusiveTouch属性)

exclusiveTouch的意思是UIView会独占整个Touch事件,具体的来说,就是当设置了exclusiveTouch的 UIView是事件的第一响应者,那么到你的所有手指离开前,其他的视图UIview是不会响应任何触摸事件的,对于多点触摸事件,这个属性就非常重要,值得注意的是:手势识别(GestureRecognizers)会忽略此属性。
列举用途:我们知道ios是没有GridView视图的,通常做法是在UITableView的cell上加载几个子视图,来模拟实现 GridView视图,但对于每一个子视图来说,就需要使用exclusiveTouch,否则当同时点击多个子视图,那么会触发每个子视图的事件。当然 还有我们常说的模态对话框。



--------------------------------------------------------------------------------UIView--------------------------------------------------------------------------------

目录
相关文章
|
Oracle Java 关系型数据库
Oracle jdk 的国内下载镜像
Oracle jdk 的国内下载镜像
51937 0
|
存储 大数据 关系型数据库
【数据库三大范式】让我们来聊一聊数据库的三大范式和反范式设计
数据库三大范式是指数据库设计中的规范化原则,它们分别是第一范式(1NF)第二范式(2NF)和第三范式(3NF)。第一范式(1NF)第二范式(2NF)第三范式(3NF)
|
虚拟化 数据安全/隐私保护 网络安全
|
存储 边缘计算 人工智能
边缘计算系统逻辑架构:云、边、端协同,定义及关系
边缘计算系统逻辑架构:云、边、端协同,定义及关系
14232 1
边缘计算系统逻辑架构:云、边、端协同,定义及关系
|
负载均衡 安全 Ubuntu
「网络安全架构」10个可与商业解决方案相媲美的最佳开源防火墙
「网络安全架构」10个可与商业解决方案相媲美的最佳开源防火墙
|
网络安全
Linux_异常_03_Failed to restart iptables.service: Unit not found.
启动防火墙时出现: Failed to restart iptables.service: Unit not found.     解决方案: 1.https://stackoverflow.
8713 0
|
7天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1165 3
|
6天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
841 12
|
16天前
|
人工智能 运维 安全