iOS解决低版本兼容的方法

Objective-C2.0提供了Category机制能够对现有的Objective-C类进行扩充。我们可以通过Category机制来解决已有的Cocoa Framework中的类的某些方法版本过高的问题。

比如在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方法。

posted @ 2011-12-20 17:29  zenny_chen  Views(4206)  Comments(0Edit  收藏  举报