32. UIImage+画像の拡大縮小
UIImageでは画像を読み込むことができますが、UIImageではできない縮小・拡大画像を取得したいので、次にUIImageで画像の拡大・縮小を実現するためのUIImage分類を追加します。ズームアウトする。
まず、UIImage+Scaleクラスを作成します。
次に、このクラスのメソッドを実装します:
#import <UIKit/UIKit.h> @interface UIImage (scale) -(UIImage*)scaleToSize:(CGSize)size; @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)];
33. Coreplot: 散布図では、legendTitleForBarPlot は呼び出されません
legendTitleForBarPlot はヒストグラムのデータ ソース メソッドです、散布図データ ソース デリゲート CPTScatterPlotDataSource にはそのようなメソッドはありません。凡例のタイトルをカスタマイズする唯一の方法は、プロットの title 属性を指定することです。 title が空の場合は、identifier 属性が使用されます。
34. setHidesBackButton は戻るボタンを非表示にすることはできません
setHidesBackButton:animated: を viewWillAppear: メソッドまたは viewDidLoad メソッドではなく viewDidAppear: メソッドに移動します。
35. NSURLConnectionDelegate のプロトコル宣言が見つかりません
iOS5 以降、NSURLConnectionDelegate は非推奨になりました。NSURLConnection.h では、これらのメソッドは非公式のプロトコルになりました。同時に、これらのメソッドのコピーが正式なプロトコル NSURLConnectionDataDelegate にコピーされます。クラス インターフェイスで宣言されている 6c7586e62da791676357131c39ce00fc を直接削除し、これらのメソッドを実装して非公式プロトコルを使用できます。
36. 警告「プロパティの合成されたゲッターは、「所有」オブジェクトを返すための Cocoa 命名規則に従っています。」
合成されるプロパティでは、プロパティ名が「newFeature」など「new」で始まっていてはなりません。
37. C99 では関数「xxx」の暗黙的な宣言は無効です
これは Xcode のバグです。このエラーは、コンパイラが初めて関数定義を参照したものの、関数プロトタイプが見つからなかった場合に報告されます。解決策は、関数定義の前に関数プロトタイプ宣言を追加することです。関数プロトタイプ宣言ステートメントは、クラスのインターフェイス宣言 (.h ヘッダー ファイル)、またはクラス実装ステートメント (.m ファイル) の前に挿入されることに注意してください。
38. -[UIImageresizableImageWithCapInsets:]: 認識されないセレクター
このメソッドは 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]; }
39。指定されたフォントの文字列サイズを計算します
CGSizemaximumLabelSize = CGSizeMake(250 ,MAXFLOAT); CGSizeexpectedLabelSize = [LABEL.text sizeWithFont:[UIFontsystemFontOfSize:UILabel.font] constrainedToSize:maximumLabelSize lineBreakMode:UILineBreakModeWordWrap];
expectedLabelSize は、フォント、最大サイズ制限、改行モードに基づいて計算された実際のサイズです。
40. ASIHTTPRequestclearDelegateAndCancel メソッドによりプログラムがクラッシュします。ASIHTTPRequest はデリゲート オブジェクトを保持しません。リクエストをキャンセルするか、デリゲートを解放する場合、解放されたデリゲート メソッドの呼び出しを避けるために、リクエストをキャンセルする必要があります。ただし、clearDelegateAndCancel メソッドを使用すると、割り当て解除されたオブジェクトの呼び出しエラーが発生し、クラッシュします。
これを回避するには、次のことを行う必要があります (バージョン 1.8.1 以前の場合):
デリゲート内で ASIHTTPRequest オブジェクトを保持します。
デリゲートを解放するかリクエストをキャンセルする場合は、clearDelegateAndCancel を呼び出さず、「[requestrelease],request= nil」を使用します。 ;"。
41. ARC では 'int' から 'CAMediaTimingFunction *' へのキャストは禁止されています
次のコードは上記のエラーを引き起こします:
transition.timingFunction= UIViewAnimationCurveEaseInOut;実際、このコードは MRC (手動メモリ管理) でも間違っています。エラーが出ないのは、UIViewAnimationCurveEaseInOut が通常 0 で、変換すると nil になるためです。実際、このコードは次のように変更する必要があります:
[animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut]];