iOS開發百問(4)

3二、UIImage+Scale縮放圖片ide

UIImage能夠加載圖片,可是咱們想要獲得一張縮小或放大的圖片,利用UIImage不能作到,下面咱們添加一個UIImage的分類,用來實現UIImage中圖片的放大和縮小。函數

首先,建立一個UIImage+Scale類。字體

而後,實現該類的方法:spa

#import <UIKit/UIKit.h>.net

@interface UIImage (scale)code

-(UIImage*)scaleToSize:(CGSize)size;orm

@end 對象

#import "UIImage+Scale.h"接口

@implementation UIImage (scale)圖片

-(UIImage*)scaleToSize:(CGSize)size

{

    // 建立一個bitmap的context

    // 並把它設置成爲當前正在使用的context

    UIGraphicsBeginImageContext(size);

    // 繪製改變大小的圖片

    [self drawInRect:CGRectMake(0, 0, size.width,size.height)];

    // 從當前context中建立一個改變大小後的圖片

    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();

    // 使當前的context出堆棧

    UIGraphicsEndImageContext();

    // 返回新的改變大小後的圖片

    return scaledImage;

}

@end

最後,就是該類的使用了:

#import "UIImage+Scale.h"

 [[UIImage imageNamed:」p.png」] scaleToSize:CGSizeMake(252.0f,192.0f)];

 

3三、Coreplot:在散點圖中,legendTitleForBarPlot不會被調用

legendTitleForBarPlot是柱狀圖的數據源方法,在散點圖的數據源委託CPTScatterPlotDataSource 中沒有該方法。要定製 legend 的標題,惟一的方法是指定plot 的 title 屬性。若是 title 爲空,則使用 identifier 屬性。

 

3四、 setHidesBackButton不能隱藏返回按鈕

將setHidesBackButton:animated:移到 viewDidAppear: 方法,而不要在 viewWillAppear:或者viewDidLoad方法中。

 

3五、cannotfind protocol declaration NSURLConnectionDelegate

iOS5開始NSURLConnectionDelegate被deprecated,在NSURLConnection.h中,這些方法變成了非正式協議。同時複製了一份這些方法的拷貝到正式協議NSURLConnectionDataDelegate中。你能夠直接將類接口聲明的<NSURLConnectionDelegate>刪除,並實現這些方法,從而使用非正式協議。

3六、警告「Property'ssynthesized getter follows Cocoa naming convention for returning 'owned'objects」

要synthesized的屬性中,屬性名不得以「new」開頭,好比「newFeature」。

3七、 Implicit declaration of function 'xxx' is invalidin C99

這是Xcode的一個bug。當編譯器第一次看見函數定義,卻未找到該函數原型時會報此錯誤。解決方法是在函數定義以前加入函數原型聲明。注意,把函數原型聲明語句插入到類的interface聲明內(.h頭文件),或者的類implementation語句以前(.m文件)。

3八、-[UIImageresizableImageWithCapInsets:]: unrecognized selector

這個方法是iOS5中新增的,在iOS4中請使用stretchableImageWithLeftCapWidth:topCapHeight:方法。代碼:

if([img respondsToSelector:@selector(resizableImageWithCapInsets:)])

        {//for iOS 5+

            img=[srcImg resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];

        }else{//iOS 4 compatibility

           img=[srcImg stretchableImageWithLeftCapWidth:6 topCapHeight:0];

        }

 

3九、計算指定字體的字符串Size

CGSizemaximumLabelSize = CGSizeMake(250 ,MAXFLOAT);

CGSizeexpectedLabelSize = [LABEL.text sizeWithFont:[UIFontsystemFontOfSize:UILabel.font]

 constrainedToSize:maximumLabelSize

 lineBreakMode:UILineBreakModeWordWrap];

expectedLabelSize即根據字體、最大size限制、換行模式計算出來的實際Size。

40、ASIHTTPRequestclearDelegateAndCancel方法致使程序崩潰

ASIHTTPRequest並不會持有delegate對象,當你取消一個request或delegate釋放後,爲了不調用釋放了的delegate方法,咱們應當取消request。可是clearDelegateAndCancel方法會致使一個調用deallocated對象錯誤並崩潰。

爲了不這個,你應當(針對1.8.1及以前的版本):

在delegate中持有ASIHTTPRequest對象;

當釋放delegate或取消request時,使用不要調用clearDelegateAndCancel而改用「[requestrelease],request=nil;」。

4一、 Castof 'int' to 'CAMediaTimingFunction *' is disallowed with ARC

如下代碼致使上述錯誤:

transition.timingFunction= UIViewAnimationCurveEaseInOut;

事實上,就算在MRC(手動內存管理)中,這句代碼也是不正確的。之因此可以不出錯,是由於UIViewAnimationCurveEaseInOut一般爲0,轉換過來就變成了nil。實際上這句代碼應該修改成:

[animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

相關文章
相關標籤/搜索