21

これを実行すると、iPhone 5 レイアウトからスケーリングされた iPhone 6/6+ シミュレーターで実行している場合 (iPhone 6/6+ の起動イメージを渡さずに)、ビュー (またはメイン ウィンドウ、確かではありません) のサイズが一瞬変更されることに気付きました。

[self.view snapshotViewAfterScreenUpdates:YES];

そこに「NO」を渡すことができないときにそれを機能させる方法はありますか?

更新 (7 月 13 日):
iOS 8.4 では再現されないようです。

4

3 に答える 3

13

Apple/API の問題のように思えたので、"YES" を渡す必要がある場合はそのメソッドを使用しないことにしました。

ビューのスクリーンショット (UIImage) を取得し、それを UIImageView に配置して、スナップショット メソッドから取得するために使用した「UIView」として機能させることができます。

コードのリンクは次のとおりです: 網膜ディスプレイで品質を損なうことなく UIView を UIImage にキャプチャする方法

#import <QuartzCore/QuartzCore.h>

+ (UIImage *) imageWithView:(UIView *)view
{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return img;
}
于 2014-09-24T19:20:39.297 に答える
1

@anon と @PJC が正しいようで、それは UIKit のバグです。によって回避できる場合があります[view.layer renderInContext:UIGraphicsGetCurrentContext()]

この時点で、iPhone 6/6+ のレイアウトを手動で調整することで問題を解決しました。ネイティブ デバイスの解像度では問題が再現されないためです。

于 2014-10-01T10:57:36.023 に答える