UIView中常用的方法

UIView 中常见的方法总结

addSubview: 
添加一个子视图到接收者并让它在最上面显示出来。 
- (void)addSubview:(UIView *)view 
讨论 
这方法同样设置了接收者为下一个视图响应对象。接收者保留视图。如果你使用removeFromSuperview方法用来把视图移除他的显示列表,那么视图将会被释放。如果你想要在视图移除显示列表後保留并使用这个视图(如果,举个例子,你想要交换一些视图的位置。),你不许保留那个视图在他调用removeFromSuperview前。 

bringSubviewToFront: 
把指定的子视图移动到顶层 
- (void)bringSubviewToFront:(UIView *)view 
参数 
view 
需要移到顶层的视图 

convertPoint:fromView: 
把一个点从一个坐标系转换到接收者的坐标系 
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view 
参数 
point 
一个视图中坐标系上的点 
view 
一个视图包含了点和他自身坐标系。如果是图是nil,那么这个方法将尝试转换基于窗口的坐标系。否则视图和那个接收者必须属于同一个UIWindow对象。 
返回值 
一个转换到接收者坐标系的点 

convertPoint:toView: 
转换一个点从接收者坐标系到给定的视图坐标系 
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view 
参数 
point 
一个在调用者坐标系中的点 
view 
一个包含了需要被转换的点的视图。如果视图是nil,那么这个方法将会转换成基于窗口的坐标。否则视图和接收者都要属于同一个UIWindow对象。 
返回值 
基于视图的坐标系转换过的点 

convertRect:fromView: 
转换一个矩形从其他视图坐标系到接收者坐标系。 
- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view 
参数 
rect 
一个在视图坐标系中的矩形 
view 
一个视图内部有矩形在他的坐标系中。如果视图是nil,那么这个方法将会基于窗口来转换。否则视图和接收者必须都属于同一个UIWindow对象 
返回值 
The converted rectangle 
转换过的矩形 

convertRect:toView: 
转换接收者坐标系中的矩形到其他视图 
- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view 
参数 
rect 
一个在接收者坐标系中的矩形 
view 
要转换过去的目标视图对象。如果这个是视图是nil,这个方法将会基于窗口坐标系来转换。否者视图和接收者必须属于同一个UIwindow对象 
返回值 
一个转换过的矩形 

didAddSubview: 
告诉视图当子视图已经添加 
- (void)didAddSubview:(UIView *)subview 
参数 
subview 
被添加做子视图的视图对象 
讨论 
被子类重写用来执行额外的命令当子视图添加到接收者。这个方法被addSubview调用 

didMoveToSuperview 
通知接收者父视图已经改变(nil是允许的) 
- (void)didMoveToSuperview 
讨论 
默认不做任何事情;子类可以重写这方法来作为特定的实现 

didMoveToWindow 
通知接收者它一斤给添加到窗口中 
- (void)didMoveToWindow 
讨论 
默认实现不做任何事情;子类可以重写这个方法来做特殊的实现 
窗口的属性有可能是nil当这个方法调用的时候,这表明接收者并不属于当然任何一个窗口。这个只发生在接收者从它的父视图上移除或者接收者添加到父视图中而不是添加到window中。重写这个方法可以用来选择忽略一些他们不关心的对象 

drawRect: 
在接收者视图中绘制矩形 
- (void)drawRect:(CGRect)rect 
参数 
rect 
一个定义的需要绘制的矩形 
讨论 
子类重写这个方法如果他们确实要绘制他们自定义的视图。如果子类是其他视图的容器那么它不需要重写这个方法。默认的实现不做任何事情。如果你自定义的视图是一个UIView子类,你不需要去调用它的父类实现。注意如果它的父类实现绘制并且不透明属性为YES那么每一个子类都需要填充矩形。 
当这个方法被调用,接收者可以假定他的帧在坐标上已经转换,边界矩形已经应用;所有他要做的就是绘制自定义的方法。使用UIGraphicsGetCurrentContext方法去获取当前图形内容用来绘制,坐标原点在左上角。不要保留图片内容当他可以被drawRect:这个方法调用。 
exchangeSubviewAtIndex:withSubviewAtIndex: 
交换接收者的子视图和给定的索引视图 
- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2 
参数 
index1 
一个需要取代索引2的子视图 
index2 
一个需要取代索引1的子视图 

hitTest:withEvent: 
返回接收者视图层次中最远的派生(包括它本身)的特定的点。 
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
参数 
point 
接收者坐标系中的点 
event 
触发这个方法的事件或者是如果这个方法被预调用就返回nil 
返回值 
一个视图对象最远的派生点。如果这个点位于接收者之外就返回nil 
讨论 
这个方法贯穿视图的层次发送pointInside:withEvent: 消息到每一个子视图用来决定那个子视图需要接收触摸事件。如果pointInside:withEvent: 返回YES,那么视图的层次全部贯穿;否则视图层次的分支是被否定的。你不太需要调用这个方法,但是你需要重写它用来隐藏子视图的触摸事件。 
如果视图是隐藏的,禁止用户交互的或者透明值小于01那么这个方法不可用 

initWithFrame: 
初始化并返回一个新的拥有特定帧矩形的视图对象 
- (id)initWithFrame:(CGRect)aRect 
参数 
aRect 
一个帧矩形用来创建视图对象。原始的帧在它的父视图的坐标系中。设置这个属性用来改变中心和边界属性。 
返回值 
一个初始化的视图对象,如果没有被创建那就返回nil 
讨论 
一个新的视图对象必须添加到视图链中才能使用。这个方法为UIView类指出初始化对象。 

insertSubview:aboveSubview: 
在视图层次顶层插入一个视图 
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview 
参数 
view 
一个插入被用来放在顶层的视图。它将会从父视图中移除如果它不是相邻视图 
siblingSubview 
一个相邻视图用来放在插入视图的後面 

insertSubview:atIndex: 
插入视图到指定的索引 
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index 
参数 
view 
插入的视图,这个值不能是nil 
index 
子视图索引从0开始并且不能大于子视图的数量 

insertSubview:belowSubview: 
插入视图到显示链的底层 
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview 
参数 
view 
一个需要插入到其他视图底部的视图。它将从它的父视图移除如果它不与相邻视图的相邻 
siblingSubview 
一个相邻视图将会在插入的视图之上 

isDescendantOfView: 
返回一个布尔值指出接收者是否是给定视图的子视图或者指向那个视图 
- (BOOL)isDescendantOfView:(UIView *)view 
参数 
view 
一个视图用来测试子视图在视图层次中的关系 
返回值 
如果接收者是视图的子视图就返回YES,或者视图就是接收者;否则就是NO 

layoutIfNeeded 
排列子视图如果需要的话 
- (void)layoutIfNeeded 
讨论 
使用这个方法来关注子视图的排列在绘制前 

layoutSubviews 
排列子视图 
- (void)layoutSubviews 
讨论 
当layoutIfNeeded被调用是子类用来重写这个方法来排列子视图。默认实现这个方法不做任何事情。 

pointInside:withEvent: 
返回一个布尔值指出接收者是否包含特定的点 
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 
参数 
point 
一个在接收者坐标系内的点 
event 
这个方法的目标事件或者如果这个方法被预调用返回nil 
返回值 
如果点在接收者边界内返回YES,否则返回NO 

removeFromSuperview 
把接收者从它的父视图或者窗口移除,并在响应链中移除。 
- (void)removeFromSuperview 
讨论 
接收者同时释放;如果你计划重用它,要确定在发送消息前保持它并在添加到其他UIView对象作为子视图後移除。 不要在显示的时候调用 

sendSubviewToBack: 
移动指定的子视图到它相邻视图的後面 
- (void)sendSubviewToBack:(UIView *)view 
参数 
view 
一个子视图用来移动到它後面去 

setNeedsDisplay 
控制接收者的边界矩形被标记为需要显示 
-(void)setNeedsDisplay 
讨论 
默认情况下,视图几何图形的改变自动重绘而不需要调用drawRect:方法。因此,你需要去请求视图重绘当视图的数据或者状态改变的时候。从这个意义上来说,向视图发送setNeedsDisplay消息。任何UIView对象标记为需要显示後将会在应用程序循环中自动重新绘制。 

setNeedsDisplayInRect: 
标记接收者中的特定的矩形区域为需要显示,或者添加接收者现有的其他无效区域 
- (void)setNeedsDisplayInRect:(CGRect)invalidRect 
参数 
invalidRect 
标记接收者的矩形区域为无效的;他需要在接收者坐标系中定义。 
讨论 
默认情况下,视图几何图形的改变自动重绘而不需要调用drawRect:方法。因此,你需要去请求视图重绘当视图的数据或者状态改变的时候。使用这个方法或者用setNeedsDisplay方法来标记视图需要显示的地方。 

setNeedsLayout 
设置当子视图显示的时候需要重新排列 
- (void)setNeedsLayout 
讨论 
如果你调用这个方法在下一个显示方法之间,那么layoutIfNeeded排列子视图;否则将不会做任何事情 

sizeThatFits: 
计算并返回一个最好的适应接收者子视图的大小 
- (CGSize)sizeThatFits:(CGSize)size 
参数 
size 
接收者首选的尺寸 
返回值 
一个新的大小用来适应接收者子视图 
讨论 
默认的实现返回大小参数 子类重写这个方法用来返回特定视图的大小。举个粒子,UISwitch返回一个修正过的大小,UIImageView返回图片的大小 这个方法并没有改变接收者的大小 

sizeToFit 
调整大小并移动接收者视图大小所以他包含了他的子视图 
- (void)sizeToFit 
讨论 
这个方法使用sizeThatFits: 方法来决定大小。子类需要重写sizeThatFits:用来计算正确的尺寸大小。默认的实现不做任何事情。 

viewWithTag: 
返回视图的特定的标签 
- (UIView *)viewWithTag:(NSInteger)tag 
参数 
tag 
一个用来在视图中搜索的标签 
返回值 
视图在接收者层次中符合的标签,接收者也包含在搜索中。 

willMoveToSuperview: 
通知接收者他的父视图将会改变到特定的父视图(也有可能是nil) 
- (void)willMoveToSuperview:(UIView *)newSuperview 
参数 
newSuperview 
新的视图对象将会是接收者新的父视图 
讨论 
子类可以重写这个方法来做一些特定的行为 

willMoveToWindow: 
通知接收者它已经被添加到特定的窗口对戏那个的视图层次中(也有可能是nil) 
- (void)willMoveToWindow:(UIWindow *)newWindow 
参数 
newWindow 
一个窗口对象将会成为接收者新的视图层次的根视图 
讨论 
子类可以重写这个方法来提供一些特定的必要实现 

willRemoveSubview: 
由子类重写用来在子视图从接收者视图中移除前执行一些特定的方法。 
- (void)willRemoveSubview:(UIView *)subview 
参数 
subview 
子视图将会被移除 
讨论 
这个方法被调用当子视图接收到removeFromSuperview消息或者子视图从接收者视图层次中移除因为它要被添加到其他视图了

 

转载于:https://www.cnblogs.com/hsxblog/p/4982324.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android studio之如何快速查看页面的布局

Android studio  -> tools -> Android -> L&…

你们是不是对QQ总在后台莫名其妙更新一些东西很反感

开始 - 运行 - gpedit.msc 打开策略组依次进入 计算机配置——Windows设置——安全设置——软件限制策略——其他规则有人说软件限制策略下面是空的 你在软件限制策略上右键——新建 下面的目录自然就出来了右键——新建路径规则 依次输入如下路径并选择不允许<系统路径>…

GTKmm 学习资料

GTK2.0 中的容器控件与布局技巧 GTK图形化应用程序开发学习笔记&#xff08;一&#xff09;—概述

Android之在linux终端执行shell脚本文件(通过aapt)得到apk包名

1、问题 我们在ubuntu上经常想看到apk的包名,然后在终端通过pidcat.py packageName 过滤日志,我们常用的办法手机连接电脑,然后打开这个app adb shell dumpsys activity top 我们可以看到当前activity的名字和包名,但是如果这是一个apk呢?还没有运行呢?我们可以通过工…

C# 线程问题之争用条件

用多个线程编程并不容易。在启动访问相同数据的多个线程时&#xff0c;会间歇性地遇到难以发现的问题。如果使用任务、并行 LINQ 或 Parallel 类&#xff0c;也会遇到这些问题。为了避免这些问题&#xff0c;必须特别注意同步问题和多个线程可能发生的其他问题。下面探讨与线程…

BFS HDOJ 2102 A计划

题目传送门 题意:中文题面 分析:双层BFS,之前写过类似的题.总结坑点: 1.步数小于等于T都是YES  2. 传送门的另一侧还是传送门或者墙都会死  3. 走到传送门也需要一步 #include <bits/stdc.h> using namespace std;char maze[2][11][11]; int dx[4] {-1, 1, 0, 0}; i…

MVC 之 Partial View 用法

Partial View 顾名思义就是Html代码片段&#xff0c;因此可以用Partial View 把部分的Html或显示逻辑包装起来&#xff0c;方便多次使用。Partial View 需要放在Views/Shared 目录下&#xff0c;任何Controlller 下的Action 或 View 都可以载入。如何载入Partial View?MVC 的 …

Matlab 7.1安装及打不开问题解决

一、安装方法 1、解压[MATLAB.V7.1.Windows版本].MATLAB.V7.1.R14.SP3.CD1.iso,双击setup进行安装,输入用户名,单位,找到crack下的PLP number.txt文件夹的PLP序列,复制粘贴。 2、安装过程中选择[MATLAB.V7.1.Windows版本].MATLAB.V7.1.R14.SP3.CD2和[MATLAB.V7.1.…

Android之在linux终端执行shell脚本直接打印当前运行app的日志

1、问题 我们一般很多时候会需要在ubuntu终端上打印当前运行app的日志,我们一般常见的做法是 1)、获取包名 打开当前运行的app,然后输入如下命令,然后在第一行TASK后面的就可以看到包名 adb shell dumpsys activity top 2)、我们的终端安装了pidcat.py脚本,然后执行如下…

尾调用优化 java_为什么JVM仍然不支持尾调用优化?

拉丁的传说也许您已经知道这一点&#xff0c;但是这个功能并不像听起来那么简单&#xff0c;因为Java语言实际上将堆栈跟踪暴露给程序员。考虑以下程序&#xff1a;public class Test {public static String f() {String s Math.random() > .5 ? f() : g();return s;}publ…

【AngularJS】—— 2 初识AngularJs(续)

前一篇了解了AngularJS的一些简单的使用&#xff0c;这里继续跟着w3c学习一下剩下的内容。 本篇根据w3cschool.cc继续学习AngularJS剩余的内容&#xff0c;包括&#xff1a; 1 事件 2 模块 3 表单 4 数据验证 5 bootstrap CSS风格 6 include包含其他页面 7 应用程序 8 参考手册…

08_drain a node on the swarm

在之前的小节&#xff0c;所有的节点的状态都是运行着的可用状态。swarm manager 可以分配任务给任意可用的节点。有时候&#xff0c;你可能需要对某台服务器进行维护&#xff0c;你需要配置某个节点为drain状态&#xff0c;即排干该节点上面的所有运行的容器。drain状态可以防…

特斯拉为何使用.NET 技术栈?

【精选转载】| 来源/知乎在知乎上有一个帖子非常热闹&#xff1a;“为何特使拉使用.net core技术栈 而不用 java&#xff1f;”1回答1&#xff1a;Kasim作者&#xff1a;Kasim链接&#xff1a;https://www.zhihu.com/question/496204534/answer/2269157872这题我熟啊&#xff0…

java之DocumentBuilderFactory解析xml

1、About documentBuilderFactory API description 1&#xff09;、 javax.xml.parsers 包DocumentBuilderFactory创建DOM模式的解析器对象, DocumentBuilderFactory是抽象工厂类&#xff0c;不能直接实例化&#xff0c;但是有newInstance方法 2&#xff09;、DocumentBuilderF…

java jdk实现快速排序_Java实现快速排序过程分析

快速排序过程没有既不浪费空间又可以快一点的排序算法呢&#xff1f;那就是“快速排序”&#xff01;光听这个名字是不是就觉得很高端呢。假设我们现在对“52 39 67 95 70 8 2552”这个8个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了&#xff0c…

深入理解计算机系统读书笔记

由于这本书的前半部分习题大多是相关计算和简单汇编代码编写&#xff0c;所以当时都是在稿纸上练习的&#xff0c;不过现在那些稿纸似乎也不见了: ( 所以现在仅有后半部分的课后习题代码以及示例练习代码&#xff08;家里作业习题当时并没有做&#xff0c;准备阅读第二遍时再做…

Blazor University (6)组件 — 组件事件

原文链接&#xff1a;https://blazor-university.com/components/component-events/组件事件源代码[1]EventCallback<T> 类是一个特殊的 Blazor 类&#xff0c;可以作为参数公开&#xff0c;以便组件可以在发生感兴趣的事情时轻松通知使用者。一旦声明了 EventCallback&l…

JavaScript匿名函数以及在循环中的匿名函数

一 历史 JavaScript其实是一门奇异的语言&#xff0c;TA的一大特性是没有块级作用域 for(var i0;i<10;i){} console.log(i)大家猜测下值是多少&#xff1f;答案是 10&#xff0c; 虽然我们在一个块内申明了变量&#xff0c;但i却是在全范围内起作用的&#xff0c;所以就引入…

Linux内核笔记--内存管理之用户态进程内存分配

内核版本&#xff1a;linux-2.6.11 Linux在加载一个可执行程序的时候做了种种复杂的工作&#xff0c;内存分配是其中非常重要的一环&#xff0c;作为一个linux程序员必然会想要知道这个过程到底是怎么样的&#xff0c;内核源码会告诉你这一切。 线性区 一个可执行程序&#xff…

Android之javax.net.ssl.SSLPeerUnverifiedException: Hostname ip not verified:解决办法

1、问题 用HttpURLConnection去请求的时候抛了下面的异常 HttpRequest$HttpRequestException: javax.net.ssl.SSLPeerUnverifiedException: Hostname ip not verified: 2、分析和解决 从异常来看是因为SSL协议握手的过程中,这个服务度地址的证书没有被证实,被信任。 clien…