首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面试题型—iOS离屏渲染探索

我们想要是如右图所示效果,设置圆角后包括子视图也进行圆角裁剪。 但是按照正常流程显示完黄色图层后,在渲染蓝色图层进行圆角设置时(超出时按圆角裁剪,未超出则不需要裁剪),已经找不到黄色图层数据。...设置了图片+背景色; UIImageView *img1 = [[UIImageView alloc]init]; img1.frame = CGRectMake(100, 320,...只设置了图片,无背景色; UIImageView *img2 = [[UIImageView alloc]init]; img2.frame = CGRectMake(100, 480...我们先看一下 cornerRadius 和 masksToBounds 这几个属性。...cornerRadius用于设置圆角半径 masksToBounds设置超出部分裁剪,仅设置cornerRadius不会对内容进行圆角处理,只有设置 masksToBounds=YES才会对内容进行圆角处理

93360

视觉效果 -- iOS Core Animation 系列三

阴影裁剪 和图层边框不同,图层阴影继承自内容外形,而不是根据边界来界定。...有个头疼限制,阴影通常在Layer边界之外,如果我们开启了maskToBounds之后,所有突出图层外内容都会被裁剪到,包括我们设置阴影。...但是在同一个图层缺又存在这个问题,所以这看起来很简单效果,我们需要用到两个图层,一个图层做maskToBounds裁剪,一个图层画阴影。...图层蒙版 mask 这节原文章前有一堆铺垫,我就不说了,想看点击查看原文 本节主要是介绍CALayermaskt属性,它可以实现一些比较好玩裁剪效果。而不是常规圆形、矩形裁剪。...mask图层Color属性无关紧要,它真正有用是图层轮廓。如下图所示一样,mask属性像是一个切割机,mask图层实心地方会被保留,其他地方抛弃。 ?

1.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

UIImageView圆角,教你远离cornerRadius

日常我们使用layer两个属性,简单两行代码就能实现圆角呈现 imageView.layer.masksToBounds = YES; imageView.layer.cornerRadius =...当然这些效果不会直接显示在屏幕上,可以使用InstrumentsCoreAnimation检测,当然你也可以自己写一个检测帧频方法。 那如何高效UIImageView创建圆角?.../** * @brief clip the cornerRadius with image, UIImageView must be setFrame before, no off-screen-rendered...延伸:如何高效为UIView创建圆角? 做法原理是手动画出圆角image,在UIView上增加一层UIImageView,将image赋值给UIImageView。...当然,简单做法是设计美工自己做一张带有圆角效果图片,根据大小拉伸。这样一个好处是以防美工随意更改圆角角度?

2.1K40

Quartz2D复习(四) --- 图层CALayer和动画CAAnimation

动画全速进入,然后减速到达目的   kCAMediaTimingFunctionEaseInEaseOut (渐进渐出): 动画缓慢进入,中间加速,然后减速到达目的。...但是实质上,   图层属性值还是动画执行前初始值,并没有真正改变 11)、CAKeyframeAnimation  --- 关键帧动画   关键帧动画,也是CAPropertyAnimation...,而NSTimer无法确保计时器实际触发准确时间   使用方法:   定义CADisplayLink并制定触发调用方法   将显示链接添加到主运行循环队列 3、代码演示 1)时钟器,和当前计算机时间同步...= 50; //等于50刚好裁剪一个圆;小雨50为圆角方形;大于50变形 52 imgView.layer.masksToBounds = YES; //现实裁剪 53 imgView.layer.borderWidth...= 50; //等于50刚好裁剪一个圆;小雨50为圆角方形;大于50变形 106 imgView2.layer.masksToBounds = YES; //现实裁剪 107 imgView2

1.4K30

iOS编程101:如何创建圆形头像和圆角图片

UIKit中每个视图(例如UIView、UIImageView)都备份在一个CALayer类实例中(即layer对象)。layer对象用来管理视图备份存储和处理视图相关动画。...与往常一样,了解CALayer是如何工作最好方法就是使用它。我们将创建一个带有圆形用户头像简单profile视图。 快速了解演示项目 首先,下载此项目模板。...同时,将用户头像图像(UIImageView)与ProfileViewController.h中profileImageView属性关联起来。 ?...所以上面的第一行是设置layer对象(CALayer类一个实例)圆角半径。将方形图像变成圆形图像,半径应设置为UIImageView宽度一半。例如,如果方形图像宽度是100像素。...比如设置半径为10: self.profileImageView.layer.cornerRadius = 10.0f; 用户头像现在应该是圆角了。 ?

2.1K20

iOS设置圆角及圆形图片

方方正正样式往往会显得很生硬,而圆角样式会让人产生别样亲切感,现在越来越多用到圆角,诸如用户头像之类图片也大都用圆形来显示,本文就介绍如何设置按钮、文本框圆角以及制作圆形图片。...大概思路如下: View都有一个layer属性,我们正是通过layer一些设置来达到圆角目的,因此诸如UIImageView、UIButton、UILabel等view都可以设置相应圆角。...对于圆形头像,要制作正圆,我们需要首先设置UIImageView高宽一致,然后我们设置其圆角角度为高度除以2即可,相当于90度,代码如下: // 圆形头像 UIImageView *avatarImgView...,两边会形成完整半圆 btnOne.layer.masksToBounds = YES; btnOne.layer.cornerRadius = btnOne.frame.size.height...,两边会形成完整半圆 btnTwo.layer.masksToBounds = YES; btnTwo.layer.cornerRadius = 4.0; [self.view addSubview

1.7K20

高性能设置圆角,告别离屏渲染

今天来写一个老生常谈的话题,也是一个面试高频问题,我也在面试时不止一次问到过这个问题——如何高性能设置圆角。就用他作为2017年春节上班之后第一篇文章。...造成离屏渲染原因有: 设置CALayercornerRadius,edgeAntialiasingMask,allowsEdgeAntialiasing属性 把CALayermaskToBounds...UIImageView 添加圆角 一般我们最常见是为UIImageView添加圆角,首先重要事情放到前面讲,千万避免通过重写drawRect方法来设置圆角,不恰当使用这个方法,会导致内存暴增。...总结 如果能够只用 cornerRadius 解决问题,就不用优化。 如果必须设置 masksToBounds,可以参考圆角视图数量,如果数量较少(一页只有几个)也可以考虑不用优化。...UIImageView 圆角通过直接截取图片实现,其它视图圆角可以通过 Core Graphics 画出圆角矩形实现。

89710

iOS面试题-UI篇

不好解决方案 * 使用下面的方式会强制Core Animation提前渲染屏幕离屏绘制, 而离屏绘制就会给性能带来负面影响,会有卡顿现象出现 ``` self.view.layer.cornerRadius...0, 0, self.size.width, self.size.height); CGContextAddEllipseInRect(ctx, rect); // 裁剪...添加了圆角,其实也是通过绘图技术来实现 UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100...上下文,然后将内存中数据恢复出来, 再使用 CGContextRef 进行绘制 描述下SDWebImage里面给UIImageView加载图片逻辑 SDWebImage 中为 UIImageView...当真实图片加载出来后在替换占位图片 加载图片过程大致如下: 首先会在 SDWebImageCache 中寻找图片是否有对应缓存, 它会以url 作为数据索引先在内存中寻找是否有对应缓存 如果缓存未找到就会利用通过

1.9K21

仿window阿里旺旺登陆界面,打印机吐纸动画效果---转自Bison技术博客

偶然机会发现window阿里旺旺登陆效果蛮有意思,于是就模仿着做了一下打印机吐纸动画效果 看起来很神奇东西,实现起来却不难,下面我给大家看下主要源码。...- (void)createUI{ UIImageView *backimageView=[[UIImageView alloc]init]; backimageView.image =...backView = [[UIView alloc]initWithFrame:CGRectMake(60, 115, LBSCREEN_WIDTH-120, 0)]; backView.layer.cornerRadius...UIControlStateNormal]; login_btn.backgroundColor = [UIColor lightGrayColor]; login_btn.layer.cornerRadius...下载地址---来戳我 推荐一款学习iOS开发app_____|______| | 传送门 更多经验请点击 好文推荐:Biosn收集Git常见错误解决方式 原文地址:http:

42820

Quartz2D复习(一)--- 基础知识 绘制线段圆弧 图片水印 截图

/矩形/圆和弧)、绘制文字、绘制和生成图片、读取/生成pdf、截图/裁剪图片、自定义UI控件等 3、对于界面复杂且个性化UI,普通UI控件无法实现,而Quartz2D技术却可以通过自定义UI控件来实现...--》 因为在drawRect: 方法中才能取得跟view相关联图形上下文    drawRect: 方法在什么时候调用?     ...--》当view第一次显示到屏幕上时(加到UIWindow上现实出来)   --》调用viewsetNeedsDisplay或者setNeedsDisplayInRect: 时 6、view内部有个...)]; 178 CGContextAddPath(ctr, path.CGPath); 179 180 //圆形,左上角(10, 90) 圆心(40, 120) 半径30 cornerRadius...则是圆形 181 UIBezierPath *path2 = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 90, 60, 60) cornerRadius

2.5K10

iOS开发——制作圆形头像

在iOS7之后,我们能发现许多应用都开始使用圆形来作为用户头像形状,代表App就是腾讯QQ了,QQ头像就是圆形。...圆形头像效果图 这里可能看得不是特别清楚,实际效果,在圆形头像外部还有一个外框,用暗淡阴影显示。...制作这个圆形头像,我大体思路就是直接用Core graphic直接绘制,将原本非圆形图片直接裁剪为圆形,之后再绘制上外面的阴影。...如果对外边框没有要求同学,可以直接用最简单方式来设置,我把简单方法先贴出来: UIImage * image = [UIImage imageNamed:@"icon_huo"]; UIImageView...* imageV = self.imageView; imageV.layer.masksToBounds = YES; imageV.layer.cornerRadius =imageV.frame.size.width

1.2K20

iOS CornerRadius失效解决方案

在这里插入图片描述 I 、 iOS设置视图cornerRadius属性失效解决方案 1.1 解决步骤 1、尝试设置_numberLab.clipsToBounds = YES;2、尝试设置 [self.numberLab...layoutIfNeeded]; 之后再执行cornerRadius 在设置完约束后, 并不能马上得到它frame, 只要添加[self.view layoutIfNeeded]; 就能拿到frame...它有什么作用 masksToBounds指在设置子layer在超出父layer时是否裁剪,YES表示裁剪,NO表示不裁剪,默认是NO;通常在通过设置layer.cornerRadius属性实现圆角效果时要设置...masksToBounds和clipsToBounds是不同,前者指子layer层在超出父layer时是否裁剪(masksToBounds是CALayer属性),而后者指子view在超出父view...时是否裁剪(clipsToBounds是UIView属性)。

66420

Swift-图像性能优化

面试中又会经常有这样问题:如何实现一个图像圆角,不要用cornerRadius ---- 模拟器常用性能测试工具 Color Blended Layers(混合图层->检测图像混合模式) 此功能基于渲染程度对屏幕中混合区域进行绿...Images(拉伸图像->检测图片有没有拉伸) 会高亮那些缩放或者拉伸以及没有正确对齐到像素边界图片(也就是非整型坐标) 通常都会导致图片不正常缩放,比如把一张大图当缩略图显示,或者不正确模糊图像...头像绝大多数都是圆角头像,而且现在越来越多考虑到性能方面的问题。很多人都不用cornerRadius,认为用cornerRadius不是一个好解决办法。...,看图像处理是否到位,如果表格里面图像都拉伸,并且设置cornerRadius,那么表格的卡顿可能将会变得非常明显。...背景填充是黑色,在你图形以外范围内会被看见。

1.6K70

如何快速定位、分析、解决非CrashBUG(iOS 11篇)

至此,Bug摸清来龙去脉: UIImagePickerController裁剪选择视图向下偏移了status bar高度,但是裁剪时候还是按照y=0计算,导致结果产生偏移。...遇到代码不同iOS版本表现不同时,先查一下API变动。 查看苹果文档后发现,layercornerRadius属性在iOS 11之前是不支持Block动画。...iOS 11之后新增了cornerRadius属性Block动画支持,但是明显支持效果不是很好。...尝试在completionBlock中改变背景颜色,可以看出动画还在执行时,背景颜色发生了变化; 尝试在动画开始改变视图颜色,可以发现动画执行存在明显延迟; 可以确定:当发生这个错误之后,动画执行实现会推迟...只能把Bug总结为:iOS 11系统手机在某些情况下会发生系统错误,导致整个手机动画机制出现异常。 Bug出现之后,无法通过代码修复(iOS系统错误),只能重启手机。

2.3K50

iOS 页面渲染 - 离屏渲染

,不断去寻找更优解。...如果要在显示屏上显示内容,我们至少需要一块与屏幕像素数据量一样大 Framebuffer,作为像素数据存储区域,GPU 不停将渲染完成后内容放入 Framebuffer 帧缓冲器中,而显示屏幕不断从...Offscreen Buffer 中内容进一步叠加、渲染,完成后将结果切换到 Framebuffer 中,那么这个过程便称之为离屏渲染。...我们先看一下苹果官方文档对于cornerRadius描述: Discussion Setting the radius to a value greater than 0.0 causes the layer...关于圆角,iOS 9 及之后系统版本,苹果进行了一些优化。我们只设置 layer contents 或者 UIImageView image,并加上圆角 + 裁剪,是不会产生离屏渲染

1.9K30
领券