美文网首页一些工具类
runTime的简单应用

runTime的简单应用

作者: wsj2012 | 来源:发表于2016-06-30 10:29 被阅读38次

    利用runtime,我们能够根据服务端所给的image来动态的变化TabBarItem的大小,类似像淘宝、京东活动时。思想:主要是利用runtime对UITabBar的layoutSubviews进行重写,然后调整UITabBarItem的位置。

    实现:

    首先我们使用runtime method swizzling交换系统的- (void)layoutSubviews;

    使用KVC对系统的UITabBarButton、UITabBarSwappableImageView、UITabBarButtonLabel、_UIBadgeView进行捕获

    拿到控件后我们对其的frame进行计算,判断当前有没有超出tabbar的高度,若超出则进行处理

    再次利用runtime method swizzling交换系统的- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event;使图片超过后也能接受点击

    代码:

    method swizzling:

    计算frame,并对其重新布局

    让图片超出部分也能响应点击事件

    注意事项

    在给tabbar设置图片的时候一定要设置图片的renderingMode,否则就会出现下图中图片丢失的现象

    UITabBarButton被修改frame之后,仅有UITabBarSwappableImageView能够响应点击事件,不过我们能够在UITabBar的- (void)touchesBegan:(NSSet *)touches withEvent:(nullable UIEvent *)event;方法中捕获到

    当适配图片后不要忘记适配_UIBadgeView的frame

    相关文章

      网友评论

      本文标题:runTime的简单应用

      本文链接:https://www.haomeiwen.com/subject/qhnxjttx.html