3

iOS アプリを設計するのはこれが初めてなので、この動作を正しく理解していることを確認したいと思います。

Photoshop でナビゲーション バーのカスタム バー ボタン アイコンをデザインしました。Photoshop で保存した最終的な画像は 102 x 45 でした。確かに、これらのサイズは iOS 7 のデザイン ガイドラインで推奨されている 44 x 44 よりも大きいことがわかりました。

とにかく、画像をアセット フォルダーに配置し、次のコードを使用してバー ボタン項目をプログラムで設定しました。

UIImage* firstButtonImage = [UIImage imageNamed:@"loginbutton1"];

    CGRect frame = CGRectMake(0, 0, 102, 45);

    UIButton * someButton = [[UIButton alloc] initWithFrame:frame];
    [someButton setBackgroundImage:firstButtonImage forState:UIControlStateNormal];
    [someButton addTarget:self action:@selector(didTapLoginButton:)
         forControlEvents:UIControlEventTouchUpInside];

    self.rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:someButton];

    self.navItem.rightBarButtonItem = self.rightBarButton;

ご覧のとおり、フレームの幅と高さを画像の正確なサイズに設定しました。アプリを初めて実行したとき、画像が大きすぎて気に入らなかった。そこで、このステートメントの幅と高さのパラメーターを変更しました。

CGRect frame = CGRectMake(0, 0, 70, 30);

これで、画像は iPhone の画面で完璧に表示されます。これはiPhone 4s上にあります。

だから私の主な質問は、フレームサイズを変更すると実際に何が起こっているのですか? フレームが実際の画像サイズよりも小さいため、画像はフレーム内に収まるように自動的に縮小されますか?

4

1 に答える 1

3

backgroundImageはい、 (not )を使用しているため、画像は拡大縮小されますImage。両方のイメージの動作は異なります。

Xcode Interface Builderを確認すると、画像と背景の 2 つの画像を設定できることがわかります。背景は のUIImageフレーム全体に合わせてスケーリングされUIButtonます。

ここに画像の説明を入力

UIButton クラス リファレンスimageViewを使用すると、image( の ではなく)のimageViewにアクセスできます。backgroundImage

にアクセスimageViewできるので、次の方法でイメージのモードを変更できます。

[[someButton imageView] setContentMode:UIViewContentModeBottomLeft];

UIView Class ReferenceではUIViewContentModes、Appleが提供するすべてを確認できます。

コードを少し変更することを確認できます。

[someButton setImage:firstButtonImage forState:UIControlStateNormal];
[[someButton imageView] setContentMode:UIViewContentModeBottomRight];
于 2014-04-09T22:21:53.837 に答える