1

ビューがどのように機能するかを理解するために、非常に小さな単一ビュー アプリケーションで遊んでいます。私はiOS開発に非常に慣れていません。唯一のビューの背景としてまとめた画像を使用しています。アプリを実行しているとき、私の背景は膨大です。まるでズームインまたはスケーリングされているかのようです。ビューの Big Nerd Ranch チュートリアルに従っているため、HypnosisView という UIView のサブクラスを使用しています。これは一時的なものです。また、背景に使用しようとしている画像が正確に 640 x 1136 ピクセルであることにも注意してください。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    CGRect viewFrame = CGRectMake(0, 0, 640, 1136);

    HypnosisView *view = [[HypnosisView alloc] initWithFrame:viewFrame];
    [view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"BG.png"]]];
    [[self window] addSubview:view];

    self.window.backgroundColor = [UIColor blackColor];
    [self.window makeKeyAndVisible];
    return YES;
}

0、0、320、568 フレームを使用して UIImageView を実装しようとするコードを更新しました。また、320 サイズの背景とフルサイズの背景を作成し、適切なタイトルで名前を付けました。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    CGRect viewFrame = CGRectMake(0, 0, 320, 568);


    UIImage *background = [UIImage imageNamed:@"background@2x.png"];
    UIImageView *backgroundView = [[[UIImageView alloc] initWithImage:background] initWithFrame:viewFrame];

    [[self window] addSubview:backgroundView];
    [[self window] sendSubviewToBack:backgroundView];

    self.window.backgroundColor = [UIColor clearColor];
    [self.window makeKeyAndVisible];
    return YES;
}
4

4 に答える 4

2

ビュー フレームが画面よりも大きい場合、画像が大きすぎると画像が切り取られます。UIScrollView を使用するか、元の画像を縮小してサイズを縮小するか、次のようなコードで画像を拡大/縮小できます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.

CGRect viewFrame = CGRectMake(0, 0, 320, 568);


UIImage *background = [UIImage imageNamed:@"BG.png"];

UIImage *scaledImage = [UIImage imageWithCGImage:[background CGImage]
                                           scale:(background.scale * 2.0)
                                     orientation:(background.imageOrientation)];

UIImageView *backgroundView = [[[UIImageView alloc] initWithImage:scaledImage] initWithFrame:viewFrame];

[[self window] addSubview:backgroundView];
[[self window] sendSubviewToBack:backgroundView];

self.window.backgroundColor = [UIColor clearColor];
[self.window makeKeyAndVisible];
return YES;
}

(私の倍率は 640x1136 の画像サイズに基づいています)

于 2013-07-09T13:57:19.197 に答える
1

私の経験から、UIView の backgroundColor を使用して背景画像を設定する場合は、使用する前に画像のサイズを 320 x 568 に縮小する必要があります。これは、view.backgroundColor または [UIColor colorWithPatternImage:] にスケーリング プロパティがないためです。また、アプリのサイズを小さくするために背景画像を縮小するとよいでしょう。

640 x 1136 の画像を使用する場合は、UIImageView を使用し、そのコンテンツ モードを指定する必要があります。例えば、

imageView.contentMode = UIViewContentModeScaleAspectFit;

上記の行を更新されたコードに追加すると、問題が解決するはずです。

于 2013-07-09T14:16:36.540 に答える
-1

iOSを呼び出す[UIImage imageNamed:@"BG.png"]と、約 320x586 の BG.png と 640x1136 の BG@2x.png という 2 つの画像があると想定されます。両方のイメージを作成する必要があります。

または、UIImageView を使用してスケール モードを設定することもできます。次に、その UIImageView をウィンドウに追加します。

于 2013-07-09T01:25:50.973 に答える