runtime的实际应用以及API设计

今天照例撸代码,看到如下设计图.在设计图的上看到有许多的地方都有一个红色提醒标识.于是就想着做一个类似Badge的控件.开始想自定义一个这样的控件,但是发现如果要实现一个类,这样其他已有的视图可复用性太低,最后打算给uiview写一个cagetory.

设计API接口的时候就想着如果一个方法里面的参数过多,就会过度设计.但是如果参数太少,可复用性就差.最后决定用 objc_setAssociatedObject 和 objc_setAssociatedObject 来动态的为uiview加上badge这样的属性.

我们都知道,catagory之所以不能给一个类添加属性是因为编译器在最开始就已经分配好了内存,所以无法在添加任何实例变量,但是有了runtime,让一切皆有可能.

具体实现的代码如下:




[cellshowBadgeWithStyle:WBadgeStyleNumbervalue:8];

cell.badgeCenterOffset=CGPointMake(-40,22);


还未解决的问题:如果视图使用autolaoout布局,就无法获得具体frame,badged就无法出现在右上角,只能出现在左上角.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,730评论 4 61
  • 操场上有积水,走两三步才有漏过云层的雨滴在脸上。 下了晚自习回家,即使早离开了学校公交也没到,但还是下课前五分钟就...
    昆瑶君阅读 318评论 0 0
  • 前言 在开发中有时会碰到旋转屏幕的需求,例如直播时横竖屏推流,这里我使用的一种方法时用纯代码强制翻转,其他晚上方法...
    calary阅读 859评论 2 0
  • 那是追风筝的哈桑,对阿米尔说:为你,千千万万遍。耳语般的低喃,轻轻地脱口,却是一生一世的承诺,不只说给阿尔米听,更...
    山风岚希阅读 299评论 0 0
  • 零极限,2篇爱和喜悦的祈祷,幸福日记 1. 今天晚上吃了一顿原味饺子,呵呵是没有调味的饺子馅,为什么呢?下班回到家...
    FennieW阅读 164评论 0 0

友情链接更多精彩内容