ホームページ  >  記事  >  バックエンド開発  >  iOS 開発に関する質問 (4)

iOS 開発に関する質問 (4)

黄舟
黄舟オリジナル
2017-01-20 09:29:321130ブラウズ

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]];


上記は iOS 開発に関する質問 (4) の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。