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消息或者子视图从接收者视图层次中移除因为它要被添加到其他视图了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容