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

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

今天来写一个老生常谈的话题,也是一个面试的高频问题,我也在面试时不止一次被问到过这个问题——如何高性能的设置圆角。就用他作为2017年春节上班之后的第一篇文章。...而在这里的一行代码,必须为它洗白一件事情,设置圆角的这行代码,本身并不会带来任何的性能损耗。...但是,如果你给一个UILabel也使用了上面的一行代码,你会发现这个UILabel并不会有任何的变化,可是我们确实实实在在的为它设置了圆角属性。...kProcessedImage, @(1), OBJC_ASSOCIATION_RETAIN_NONATOMIC); } self.image = processedImage; 上面这段代码我只是给出了大致的实现思路...,圆角路径直接用贝塞尔曲线绘制,而其中的属性,使用了runtime的黑魔法去设置,在Category 给一个现有的类添加属性,但是却不能添加实例变量,这似乎成为了 Objective-C的一个明显短板。

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

    《Motion Design for iOS》(十七)

    如果你在你的app的delegate类的-application:didFinishLaunchingWithOptions方法中添加这个代码,就可以在运行后的屏幕上看到它。...这里是和上面一样的功能,但是是Swift而不是Objective-C写的。你可以打开Balls In Swift Xcode工程导出这个例子的Swift版本。...很激动,我知道。现在我们让它动起来。...这一次,我希望动画能最终让球变成两倍大,所以我设置了球的transform属性为一个新值。transform是一个表述了视图中每个像素根据一些线性代码应该改变的值的矩阵。...最后,我们不需要在动画完成后运行任何代码,所以我么你设置完成(completion)的安排为NULL。这里是你再次运行代码后会看到的样子。GIF会回到原始的样子但实际上球并不会。

    96320

    OC中的一些编程写法--({"添加代码"}) 花括号用法

    UIImage imageNamed:@"avatar.png"]; imageView.layer.masksToBounds = YES; imageView.layer.cornerRadius...imageView.clipsToBounds = YESS; [view addSubview:imageView]; view; }); 这个问题严格上讲和...Objective-C没什么太大的关系,这个是GNU C的对C的扩展语法 Xcode采用的Clang编译,Clang作为GCC的替代品,和GCC一样对于GNU C语法完全支持 你可能知道if(condition...)后面只能根一条语句,多条语句必须用{}阔起来,这个语法扩展即将一条(多条要用到{})语句外面加一个括号(), 这样的话你就可以在表达式中应用循环、判断甚至本地变量等。...表达式()最后一行应该一个能够计算结果的子表达式加上一个分号(;), 这个子表达式作为整个结构的返回结果 这个扩展在代码中最常见的用处在于宏定义中

    82520

    Curl 之父:我是如何枕着18万行C代码还能安稳入睡的

    在本年度的 FOSDEM 开源大会上,Curl 作者 Daniel Stenberg 分享了“如何在你的 C 语言代码安装量达到 200 亿次时依然能睡得安稳”的秘诀。...这个数字无疑让这个由他独立开发的开源数据传输工具项目承担起了“一点点”责任。 “当然,我们用的是最安全的编程语言。”他说道,这引得观众们一阵笑声——因为 Curl 是用 C 语言编写的。...虽然他们用 C 语言编写代码,但 Stenberg 表示,他们已经禁止使用“一些容易出错的函数”。...这是测试退出路径的绝佳方式,确保我们在退出时总是释放和清理了资源。” 开发团队并不会测试所有东西。他笑着说:“这可不是一个快速的过程。”因此,他们设计了一个系统,随机测试一个较小的子集。...他们还使用了持续集成,每一个拉取请求和代码提交都会运行 40 多万个测试。“我记得大概一年前运行这些测试需要花费数小时,”他回忆道,但在对测试进行了优化之后,现在只需要 30 分钟。

    9710

    动画效果:snapshotViewAfterScreenUpdates的使用

    eg: 如果你是一个电商项目,将商品加入购物车,这个动画就可以用这个来实现(Ps:我记得京东还是淘宝久有这个效果,但是我却又找不到了),点击加入购物车,然后对商品生成一个快照,然后缩小移动到购物车(...我做的这个项目,读信的过程就是用这个效果实现,点击信封,然后生成快照,然后快照位移到屏幕中间,消失,然后信封详情出现。 ? 实现 首先,定义动画效果的实现: 查看信件:a....点击空白处,生成信件详情快照和信件快照;信件快照起始状态隐藏;b.信件详情快照慢慢变小到和信件快照同样大小;然后消失,信件快照显示;c:信件快照位移到信件的位置,然后消失; 代码 /**  *  @brief...snapshot.layer.shadowRadius = 5.0;     snapshot.layer.shadowOpacity = 0.4;     return snapshot; }``` > 关闭详情 ```Objective-C...animatedFinished();                                           }];                      }];      }``` > 查看详情 ```Objective-C

    1.5K22

    ios性能优化

    光栅化,layer.shouldRasterize = YES 遮罩,layer.mask 圆角,同时设置 layer.masksToBounds = YES,layer.cornerRadius >...启动优化思路 针对不同的阶段,有不同的优化思路: dyld 减少动态库、合并动态库,定期清理不必要的动态库; 减少类、分类的数量,减少 Selector 的数量,定期清理不必要的类、分类; 减少...Runtime 用 inilialize 方法和 dispatch_once 取代所有的 __attribute_((constructor))、C++ 静态构造器、以及 Objective-C 中的...+ Exceptions、Enable Objective-C Exceptions 设置为 NO,Other C Flags 添加 -fno-exceptions; 利用 AppCode,检测未使用代码检测...:菜单栏 -> Code -> Inspect Code; 编写 LLVM 插件检测重复代码、未调用代码; 通过生成 LinkMap 文件检测; LinkMap Build Setting ->

    1.1K40

    iOS从Xib中设置样式

    简介 iOS在写视图的有的人喜欢纯代码去写,从之前的绝对定位方式(Frame),到现在的自动布局(Autolayout),但这种方式的好处是便于复制修改和装X,但是缺点是代码不容易看,不便于修改 也有人喜欢所见即所得...添加AutoLayout边距约束时如何不使用margin约束 通常我习惯于在xib或者StoryBoard中用右键drag拖线的方式设置autolayout约束,但是默认的autolayout边距约束可能是带...而经过我的测试发现在Xcode6.1和Xcode6.4下这个margin可能表现行为还不一样。 为了避免麻烦,还是不用margin约束比较好,如何在添加约束时不使用margin约束呢?...选中控件直接command + d吧,至少比command+c与command+v节省一半时间吧? 连线 想拖线还得手动点双环按钮分屏? 凹凸啦!...项目中找类 下面这个是节约时间的大功臣:command + shift + o(字母O),在文件数目庞大的工程里效果尤为显著,可以让你在茫茫”类”海中找到你的那个它.

    2.4K20

    干货 | 携程酒店iOS动态View的探索

    ,使得我们可以直接在Objective-C或Swift代码中直接调用JavaScript代码,并得到返回结果,反过来也可以暴露方法和类供JavaScript调用。...JSValue JSValue则是一个JavaScript数据类型在Objective-C或Swift中的包装对象,借助于这个对象我们可以在Native代码和JavaScript代码之间互相传值,这两者之间的对应关系如下图所示...or Swift object (id or AnyObject)Objective-C or Swift class (Class or AnyClass) Object Structure types...:NSRange, CGRect, CGPoint, CGSize Object Objective-C block (Swift closure) Function 简单总结一下,JSContext...有了这些基础的JavaScript组件,接下去就可以如同在iOS中布局一样,开始用这些组件进行布局,如下代码片段示例了如何对一张图片进行布局。

    77620

    iOS动态View的探索

    ,使得我们可以直接在 Objective-C 或 Swift 代码中直接调用 JavaScript 代码,并得到返回结果,反过来也可以暴露方法和类供 JavaScript 调用。...JSValue JSValue 则是一个 JavaScript 数据类型在 Objective-C 或 Swift 中的包装对象,借助于这个对象我们可以在 Native 代码和 JavaScript 代码之间互相传值...language=objc) Date Objective-C or Swift object ( [id](https://developer.apple.com/documentation/objectivec...language=objc) Object Objective-C block (Swift closure) Function 简单总结一下,JSContext 提供 JavaScript 和 Native...有了这些基础的 JavaScript 组件,接下去就可以如同在 iOS 中布局一样,开始用这些组件进行布局,如下代码片段示例了如何对一张图片进行布局。

    78640

    Android 必知必会-使用 supportV4 的 RoundedBitmapDrawable 实现圆角

    背景 今天无意间看到一段实现圆形头像的代码: RoundedBitmapDrawable drawable = RoundedBitmapDrawableFactory.create(getResources...(), bitmap); drawable.setCircular(true); RoundedBitmapDrawable 这个类顿时就引起我的好奇了,一查发现是 android.support.v4...这个类中的两个方法是今天的主角: return method void setCircular(boolean circular) : Sets the image shape to circular....wrap_content" android:layout_marginTop="10dp" /> <ImageView android:id="@+id/rb_c"...总结 一个小小的发现,让我又少使用了一个第三方库,心情大好。另外在此过程中发现的 BitmapShader 是学习自定义 View 的一个不错的切入点,需要再研究研究。

    76630

    自动删除旧代码?Uber 开源利器「食人鱼」

    关键词:Uber 代码整理 开源工具 整理代码是一件艺术,对于一些过时的陈旧代码,如何优雅又快速地删除,是一件让无数人伤神的事情,但在最近, Uber 给出了一种解决的方案。...Piranha 可以在 Uber 的 Android 和 iOS 代码库中运行,目前支持 Objective-C、Swift 和 Java 三种编程语言。...但这个看似简单的清理步骤,往往会被很多开发者忽略,进而在代码容量、测试周期等多个维度上影响软件的开发。 为了解决这个问题,Uber 设计并推出了代码优化工具 Piranha。...Piranha 已经在 Objective-C、Swift 和 Java 程序中运行良好,但为了让其工作更高效,以实现 Piranha 自动进行标志清除,还需要搭建一个更完善的系统。...删除旧代码,就用食人鱼吧 当然,在上述的介绍中可知,要使用 Piranha,代码需满足以下条件: 广泛使用功能标志; 具有特定的 API 以控制功能标志的行为; 代码用 Java、Swift 或 Objective-C

    73410

    【愚公系列】《AIGC辅助软件开发》013-AI辅助客户端编程:AI辅助 iOS 应用开发

    当然,我将为你详细解析上面展示的每段代码,帮助你理解 SwiftUI 的基础语法和其实现的功能。### 1. Hello, World!...我将为你解析刚才展示的 SwiftUI 登录页面代码,帮助你理解各部分的功能和实现方式。### 1....### 总结这个示例代码展示了如何使用 SwiftUI 构建一个简单的登录页面,涉及文本输入框、密码显示切换、按钮点击操作、加载指示器等基本功能。...我一直好奇,这个容器为什么会自动居中显示,而没有居中显示的代码,我怀疑可能是.padding()”的效果导致的,我们来验证一下:.padding()怎么理解?...很明显,AI没有理解我的意思。它把所有视图都叠起来了,但这不是我想要的效果,我想要的是 U贴着手机顶部显示。这时候就需要自己微调了。

    9010

    使用 SwiftUI 的 Eager Grids

    我认为这些类型没有正式名称。我只会称它们为“有布局的容器”和“没有布局的容器”。...但为了让事情变得更容易,我创建了一个名为 Grid Trainer 的小应用程序。该应用程序可让您以交互方式使用所有这些网格参数。当您更改网格时,该应用程序还将向您显示生成您创建的网格的代码。...SwiftUI 需要以某种方式解决这个问题,如果你运行代码,你会得到以下结果: 为了打破平局,一个简单的解决方案是添加第三行: GridRow { CellView(width: 50, color...蜂窝再访 在文章 Impossible Grids 中,我们是否探索了Lazy Grid,我写了一个示例,说明如何使用这些网格来呈现蜂窝中的单元格。...我将为您提供一个起点和您需要执行的一系列步骤,以便成功实现转换。但是,如果您没有时间,或者遇到困难,您可以检查上述 gist 文件中的代码。该代码有注释,指示它执行的每个步骤的位置。

    4.4K20

    IOS 代码扫描从放弃到入门

    可选 MySQL、Oracle、PostgreSQL sonar-objective-c插件 sonarqube 默认没有扫描 oc 的检查,sonarqube 官方的 sonar-objective-c...需要在找一个免费的插件,在github找到两个项目 插件一 https://github.com/Backelite/sonar-objective-c 这个插件在三年前没有修改了,在使用中发现有些扫描规则并没有...插件二 这个项目稍微更新的时间短一些,有些规则适当的更新了 https://github.com/raatiniemi/sonar-objective-c 下载插件放到 /extensions/plugins...,可以分析 Objective-C, Java 或者 C 代码,报告潜在的问题 在releases页面中下载二进制文件 https://github.com/facebook/infer/releases...(https://juejin.cn/post/6844903575680729102) [4]:iOS 静态代码扫描平台 Sonarqube 实战 Objective-C、Swift(https://

    3.3K20
    领券