質問

私は、iOSアプリに取り組んでいます。 「UIGraphicsBeginImageContextWithOptions」:私はいくつかの場面で、次のメソッドを使用しますので、それは現在唯一のiOS 4で動作します。この方法は、iOS 4でのみ利用可能であり、私のアプリは現在、クラッシュそのための/ iPhone OS 3の作業は別として、この方法からiPhone OS 3上のアプリいけない仕事はどのように私は小切手を作るんない理由はありません。この方法が利用可能である天気をか見ますか?私は大成功せずに次のことを試してみた:

if([self respondsToSelector:@selector(UIGraphicsBeginImageContextWithOptions)]) {
    UIGraphicsBeginImageContextWithOptions(targetSize, NO, 0.0); // this will crop
}
else 
{
    UIGraphicsBeginImageContext(targetSize);

}

私は、このようなバリエーションを試してみた:

if([self respondsToSelector:@selector(UIGraphicsBeginImageContextWithOptions:size:opaque:scale:)])

if([self respondsToSelector:@selector(UIGraphicsBeginImageContextWithOptions:)])
大成功なし

。任意の助けいただければ幸います。

役に立ちましたか?

解決

UIGraphicsBeginImageContextWithOptionsあなたがその存在をテストするために-respondsToSelector:のようなObjective-Cのメソッドを使用することはできませんので、C関数です。

あなたでしたが、弱いUIKitフレームワークにリンクして、UIGraphicsBeginImageContextWithOptionsがNULLであるかどうかを確認ます:

if (UIGraphicsBeginImageContextWithOptions != NULL) {
   UIGraphicsBeginImageContextWithOptions(...);
} else {
   UIGraphicsBeginImageContext(...);
}

他のヒント

私は同じ問題を抱えています。あなたは、システムのバージョンをテストしてみてください。これは私がテストしたデバイス上で私のために働くようです。

char majorVersion = [[[UIDevice currentDevice] systemVersion] characterAtIndex: 0];
if (majorVersion == '2' || majorVersion == '3')
     UIGraphicsBeginImageContext(...);
else
     UIGraphicsBeginImageContextWithOptions(...);

私はこれが古い質問ですけど、新しいXcodeとiOSのバージョン(上位9以上)で、このメソッドのいずれかが私のために働くます。

私はいつもこのようにシステムのバージョンを確認します:

NSString *sysver = [[UIDevice currentDevice] systemVersion];
NSArray *versionNums = [sysver componentsSeparatedByString:@"."];
int majorVersion = [versionNums[0] intValue];
if (majorVersion > 3){
    UIGraphicsBeginImageContextWithOptions(...);
}
else{
    UIGraphicsBeginImageContext(...);
}

私は、これは誰も助けることができる願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top