簡體   English   中英

使用initWithFrame時縮小UIButton的背景圖像:

[英]Scaling down a UIButton's background image when using initWithFrame:

這是我第一次設計iOS應用程序,所以我想確保我正確理解這種行為。

我在Photoshop中為導航欄設計了一個自定義欄按鈕圖標。 我在Photoshop中保存的最終圖像是102 x 45,是的,我發現這些尺寸比iOS 7設計指南中推薦的44x44大。

無論如何,我將我的圖像放入資產文件夾,然后使用以下代碼以編程方式設置條形按鈕項:

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;

如您所見,我將框架的寬度和高度設置為圖像的確切大小。 當我第一次運行應用程序時,我不喜歡這個圖像,並認為它太大了。 所以我在這個語句中更改了width和height參數:

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

現在,iPhone屏幕上的圖像看起來很完美。 這是在iPhone 4s上。

所以我的主要問題是,當我改變幀大小時實際發生了什么? 由於框架現在小於實際圖像尺寸,圖像是否會自動縮小以適應框架內部?

是的,因為您正在使用backgroundImage (而不是Image ),所以圖像會縮放。 兩個圖像都有不同的行為。

檢查Xcode Interface Builder ,你可以看到,你可以設置兩個圖像:圖像和背景。 背景是UIImage ,它被縮放為UIButton的整個幀。

在此輸入圖像描述

的UIButton類參考允許您訪問imageView中的image (不是imageView的中backgroundImage

因為您可以訪問imageView ,所以可以使用以下方法更改圖像的模式:

[[someButton imageView] setContentMode:UIViewContentModeBottomLeft];

UIView類參考中,您可以檢查Apple提供的所有UIViewContentModes

您可以檢查更改一下您的代碼:

[someButton setImage:firstButtonImage forState:UIControlStateNormal];
[[someButton imageView] setContentMode:UIViewContentModeBottomRight];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM