iOS解决低版本兼容的方法
2011-12-20 17:29
513 查看
Objective-C2.0提供了Category机制能够对现有的Objective-C类进行扩充。我们可以通过Category机制来解决已有的Cocoa Framework中的类的某些方法版本过高的问题。
比如在UIWebView中,系统会根据HTML中的属性将内容显示到Web View中。这时候,当它遇到Retina Display的标志时,UIWebView会内部自动调用UIView的setContentScaleFactor方法来设置分辨率缩放因子。而这个方法是iOS4.0以上才有,如果是iOS3.2的系统直接就会导致应用崩溃。
我们可以通过以下方法解决,添加:
其中,通过UIView中的animateWithDuration:animations:方法来检测是否为iOS4.0或以上系统。而如果不是4.0则直接返回。如果是4.0或更高版本,那么直接调用UIWebView父类,即UIView的setContentScaleFactor方法。
比如在UIWebView中,系统会根据HTML中的属性将内容显示到Web View中。这时候,当它遇到Retina Display的标志时,UIWebView会内部自动调用UIView的setContentScaleFactor方法来设置分辨率缩放因子。而这个方法是iOS4.0以上才有,如果是iOS3.2的系统直接就会导致应用崩溃。
我们可以通过以下方法解决,添加:
@interface UIWebView(NotExpected) - (void)setContentScaleFactor:(CGFloat)factor; @end @implementation UIWebView(NotExpected) - (void)setContentScaleFactor:(CGFloat)factor { if(![[UIView class] respondsToSelector:@selector(animateWithDuration:animations:)]) return; else [super setContentScaleFactor:factor]; } @end
其中,通过UIView中的animateWithDuration:animations:方法来检测是否为iOS4.0或以上系统。而如果不是4.0则直接返回。如果是4.0或更高版本,那么直接调用UIWebView父类,即UIView的setContentScaleFactor方法。
相关文章推荐
- IOS 版本方法兼容解决办法
- iOS App Archive 版本出错的问题 调试和解决方法
- opencv1.0版本摄像头驱动不兼容问题的解决方法
- iOS如何限制使用SDK的版本? 解决iOS项目的版本兼容问题
- linux (REHL)系统的网络服务与此版本的网络管理器不兼容问题解决方法
- IScroll5+在ios中click事件不兼容解决方法
- form的submit()方法不能触发onsubmit事件的解决方法,兼容各版本浏览器。
- 安全短信(专业版)中英文2.2版本解决不能兼容iOS 4.0/4.1的问题
- 安装EntityFramework,提示“找不到与EntityFramework 6.1.3兼容的EntityFramework.zh-Hans版本。"的解决方法。
- iOS如何解决某些方法低版本不支持的问题
- ios上视频与音乐合成后出现播放兼容问题的解决方法
- [iOS常见问题] 关于IOS项目QQ空间授权提示安装最新版本的QQ的解决方法!
- Xcode 9下适配iPhoneX导致iOS 10不兼容问题的解决方法
- ios上视频与音乐合成后出现播放兼容问题的解决方法
- 一种解决新版本API完全兼容老版本API的方法
- CSS3中的border-radius兼容IE低版本解决方法
- 版本兼容解决方法
- 自己做IE各个版本兼容的时候用的解决办法方法,IE6到IE11都可以【亲测】
- 64位版本的Windows不兼容,masm无法运行解决方法
- 解决iOS项目的版本兼容问题-结合宏、Category和Runtime