不说话,上码:
#import "UINavigationBar+Styled.h" #import <objc/runtime.h> @implementation UINavigationBar (Styled) - (void)layoutSubviewsWithShadows { // Since we exchanged implementations, this actually calls UIKit's layoutSubviews [self layoutSubviewsWithShadows]; // Super sneaky/hacky way of getting dropshadows on all our styled navbars. //if ([[self class] respondsToSelector:@selector(appearance)]) { NSInteger shadowTag = 1; UIView *shadowView = [self viewWithTag:shadowTag]; if (shadowView == nil) { UIImageView *shadowImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"navbar_shadow"]]; shadowImg.frame = CGRectMake(0.0f, self.frame.size.height, self.frame.size.width, 15.0f); shadowImg.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth; shadowImg.tag = shadowTag; [self addSubview:shadowImg]; [shadowImg release]; } //} } + (void)load { Method origMethod = class_getInstanceMethod(self, @selector(layoutSubviews)); Method newMethod = class_getInstanceMethod(self, @selector(layoutSubviewsWithShadows)); method_exchangeImplementations(origMethod, newMethod); } @end
上面代码是wordpress源码中的一个 category,目的是给ios5.0 之上的版本加阴影图片。但是ios5.0 的
appearance 不提供这个接口,所以就有了上面的代码的出现。
关键点:
一、+ (void)load 方法
官方文档说明
Invoked whenever a class or category is added to the Objective-C runtime; implement this method to perform class-specific behavior upon loading。
意思就是运行时加载这个class或者category的时候会调用这个消息,来设定一个时机做一些class层面上自定义的事情。上述代码就是利用这个时机交换了系统的一个api消息,来实现定制。
这个方法只会调用一次。
二、自定义系统方法
例如上述代码,layoutSubviewsWithShadows 交换了系统的 layoutSubviews,但是需要注意的是,在你想发送系统消息的时候,还是要写成 [self layoutSubviewsWithShadows];
代码中有特意的注释,这部分代码,会在每次需要layoutSubViews的时候调用。
wordpress是个宝藏, 里面有很多值得学习的地方,待我慢慢挖掘。
相关推荐
IOS应用源码——wordpress ios客户端最新源码.rar
IOS应用源码——wordpress ios客户端最新源码.zip
Wordpress for ios 开源代码
Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码...
wordpress小程序源码星宿UI v0.7开源
PHP实例开发源码—WordPress IOS7风格主题 The7.zip PHP实例开发源码—WordPress IOS7风格主题 The7.zip PHP实例开发源码—WordPress IOS7风格主题 The7.zip
IOS应用源码之【应用】WordPress源代碼.rar
IOS应用源码之【应用】-WordPress源代碼.rar
简单且多彩,代码上语法更加简约,更兼容不同分辨率,更有细化的更新和优化,保留静态方便大神适配,星尘ui微信开源小程序wordpress小程序微慕插件二开。星尘是基于微慕插件和开源小程序的定制化主题,简单的说就是...
ios应用源码之图片放大镜效果 .
The7是一套来着themeforest的wordpress响应式主题,这套wordpress主题采用的是IOS7的扁平化风格,并且主题功能强大,自定义功能丰富,支持Woocommerce电子商务插件,支持SEO优化设置,支持幻灯片插件、多语言WPML...
简单且多彩,代码上语法更加简约,更兼容不同分辨率,更有细化的更新和优化,保留静态方便大神适配,星尘ui微信开源小程序wordpress小程序微慕插件二开。星尘是基于微慕插件和开源小程序的定制化主题,简单的说就是...
一款领先的和绝佳的分类广告导航网站WordPress主题之一,具有出色的前端UI。使用不同的颜色选项和强大的WP功能获取广告发布WordPress主题。谷歌地图也集成在WordPress广告主题中。根据现代时代,我们的WordPress对...
前两年IOS应用源码-主要是用于毕业设计学习的。
"【WordPress主题】2022年...泰森云每天更新发布最新WordPress主题、HTML主题、WordPress插件、shopify主题、opencart主题、PHP项目源码、安卓项目源码、ios项目源码,更有超10000个资源可供选择,如有需要请站内联系。
星尘UI小程序源码v1.3.1wordpress制作小程序.zip
WordPress主题/WordPress插件/html网站模板/iOS app源码/安卓app源码 每天更新上传!" ---------- 每天更新发布最新WordPress主题、HTML主题、WordPress插件、shopify主题、opencart主题、PHP项目源码、安卓项目...
WordPress主题/WordPress插件/html网站模板/iOS app源码/安卓app源码 每天更新上传!" ---------- 每天更新发布最新WordPress主题、HTML主题、WordPress插件、shopify主题、opencart主题、PHP项目源码、安卓项目...
WordPress主题/WordPress插件/html网站模板/iOS app源码/安卓app源码 每天更新上传!" ---------- 每天更新发布最新WordPress主题、HTML主题、WordPress插件、shopify主题、opencart主题、PHP项目源码、安卓项目...
泰森云每天更新发布最新WordPress主题、HTML主题、WordPress插件、shopify主题、opencart主题、PHP项目源码、安卓项目源码、ios项目源码,更有超10000个资源可供选择,如有需要请站内联系。 泰森云每天更新发布最新...