热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UIView常用方法汇总

在现实编程中,我们经常碰到各种的UI问题,今天我带大家一起学习,如何操作UIView的各种方法,好了直接上代码。1.addSubView-(void)viewDidLoad{[su

在现实编程中,我们经常碰到各种的UI问题,今天我带大家一起学习,如何操作UIView的各种方法,好了直接上代码。

1.addSubView

- (void)viewDidLoad {
[super viewDidLoad];
// 1.addSubView UIView*testView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)]; testView.backgroundColor = [UIColor redColor]; [self.view addSubview:testView];/*详解** addSubview:
添加一个子视图到接收者并让它在最上面显示出来。
- (void)addSubview:(UIView *)view 讨论 这方法同样设置了接收者为下一个视图响应对象。接收者保留视图。
如果你使用 removeFromSuperview方法用来把视图移除他的显示列表,那么视图将会被释放。
如果你想 要在视图移除显示列表後保留并使用这个视图(如果,举个例子,你想要交换一些视图的位 置。),
你不许保留那个视图在他调用removeFromSuperview前。
*/
}

《UIView常用方法汇总》

2.bringSubviewToFront

//2.bringSubviewToFront
UIView *bringView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 50, 50)];
bringView .backgroundColor = [UIColor grayColor];
[self.view addSubview:bringView];
[self.view bringSubviewToFront:testView]; /**详解 bringSubviewToFront
把指定的子视图移动到顶层
- (void)bringSubviewToFront:(UIView *)view 参数 view 需要移到顶 层的视图 */

《UIView常用方法汇总》

3.convertPoint:fromView:

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

4.convertPoint:toView:

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

5.convertRect:fromView:

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

6.converRect:toView:

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

7.didAddSubview:

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

  1. didMoveToSuperview

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

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

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


*/ }

11.exchangeSubviewAtIndex:withSubviewAtIndex:

// 11.exchangeSubviewAtIndex
/**详解
exchangeSubviewAtIndex:withSubviewAtIndex:
交换接收者的子视图和给定的索引视图 - (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2 参数 index1 一个需要取代索引2的子视图 index2 一个 需要取代索引1的子视图
*/

12.hitTest:withEvent:

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

// /*
插入视图到显示链的底层 - (void)insertSubview:(UIView )view belowSubview:(UIView )siblingSubview 参数 view 一个需要插入到其他视图底部的视图。它将从它的父视图移除如果 它不与相邻视图的相邻 siblingSubview 一个相邻视图将会在插入的视图之上
insertSubview:aboveSubview: 在视图层次顶层插入一个视图 - (void)insertSubview:(UIView )view aboveSubview:(UIView )siblingSubview 参数 view 一个插入被用来放在顶层的视图。它 将会从父视图中移除如果它不是相邻视图 siblingSubview 一个相邻视图用来放在插入视图的後 面
insertSubview:atIndex: 插入视图到指定的索引 - (void)insertSubview:(UIView *)view atIndex: (NSInteger)index 参数 view 插入的视图,这个值不能是nil index 子视图索引从0开始并且不能 大于子视图的数量
*/ [self.view insertSubview:testView belowSubview:bringView];
[self.view insertSubview:bringView aboveSubview:testView];
[self.view insertSubview:testView atIndex:0];

// 14.isDescendantOfView:

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

15.layoutIfNeeded

// 15.layoutIfNeeded /* 排列子视图如果需要的话 - (void)layoutIfNeeded 讨论 使用这个方法来关注子视图的排列在绘 制前*/ [self.view layoutIfNeeded];

16.layoutSubViews

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

17.pointInside:withEvent:

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

  1. removeFromSuperview
    removeFromSuperview

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

  1. sendSubviewToBack
    //sendSubviewToBack:

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

  1. setNeedsDisplay

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

  1. setNeedsDisplayInRect

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

  1. setNeedsLayout

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

  1. sizeThatFits

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

  1. sizeToFit

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

推荐阅读
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • C++语言入门:数组的基本知识和应用领域
    本文介绍了C++语言的基本知识和应用领域,包括C++语言与Python语言的区别、C++语言的结构化特点、关键字和控制语句的使用、运算符的种类和表达式的灵活性、各种数据类型的运算以及指针概念的引入。同时,还探讨了C++语言在代码效率方面的优势和与汇编语言的比较。对于想要学习C++语言的初学者来说,本文提供了一个简洁而全面的入门指南。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了Java的集合及其实现类,包括数据结构、抽象类和具体实现类的关系,详细介绍了List接口及其实现类ArrayList的基本操作和特点。文章通过提供相关参考文档和链接,帮助读者更好地理解和使用Java的集合类。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • C# WPF自定义按钮的方法
    本文介绍了在C# WPF中实现自定义按钮的方法,包括使用图片作为按钮背景、自定义鼠标进入效果、自定义按压效果和自定义禁用效果。通过创建CustomButton.cs类和ButtonStyles.xaml资源文件,设计按钮的Style并添加所需的依赖属性,可以实现自定义按钮的效果。示例代码在ButtonStyles.xaml中给出。 ... [详细]
  • 本文介绍了Java的公式汇总及相关知识,包括定义变量的语法格式、类型转换公式、三元表达式、定义新的实例的格式、引用类型的方法以及数组静态初始化等内容。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了Python函数的定义与调用的方法,以及函数的作用,包括增强代码的可读性和重用性。文章详细解释了函数的定义与调用的语法和规则,以及函数的参数和返回值的用法。同时,还介绍了函数返回值的多种情况和多个值的返回方式。通过学习本文,读者可以更好地理解和使用Python函数,提高代码的可读性和重用性。 ... [详细]
author-avatar
W蓝尾蝶SUH_435
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有