热门标签 | 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库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了一款名为TimeSelector的Android日期时间选择器,采用了Material Design风格,可以在Android Studio中通过gradle添加依赖来使用,也可以在Eclipse中下载源码使用。文章详细介绍了TimeSelector的构造方法和参数说明,以及如何使用回调函数来处理选取时间后的操作。同时还提供了示例代码和可选的起始时间和结束时间设置。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了解决Facebook脸书面试题中插入区间的方法,通过模拟遍历的方式判断当前元素与要插入元素的关系,找到插入点并将新区间插入。同时对算法的时间复杂度和空间复杂度进行了分析。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 十大经典排序算法动图演示+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社区 版权所有