2013-03-30 44 views
1

我有困難與/理解resizableImageWithCapInsets圖片不改變大小正確地使用resizableImageWithCapInsets

工作我已經安裝一個按鈕如下:

facebookLoginButton = [[UIButton alloc] initWithFrame:CGRectMake(10, 20, 300,50)]; 
facebookLoginButton.autoresizingMask = UIViewAutoresizingFlexibleWidth; 

UIImage *facebookButton = [[UIImage imageNamed:@"FacebookLogin"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(20,90,20,56)]; 
[facebookLoginButton setBackgroundImage:facebookButton forState:UIControlStateNormal]; 

[facebookLoginButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 
[facebookLoginButton setTitle:NSLocalizedString(@"FacebookLoginButton", "Facebook Login Button") forState:UIControlStateNormal]; 
[facebookLoginButton setTitleShadowColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:.35] forState:UIControlStateNormal]; 
[facebookLoginButton addTarget:self action:@selector(facebookLoginButton:) forControlEvents:UIControlEventTouchUpInside]; 

正如可以看到幀以上針對按鈕視圖是300x50像素。我爲視網膜創建了一張圖像(之後會縮小)。

該圖像是在PS中創建的png,大小爲144x100px。這是框架的高度的兩倍(對於uibutton)和使用Facebook F以及空間所需的寬度。這個想法是讓F保持靜態在左邊,可伸縮部分如下所示。

enter image description here

這裏是圖像本身是否有幫助;

enter image description here

這是目前的結果:

enter image description here

我試圖找出正確的插圖進入。我已經搜遍了大量的教程,但沒有任何解釋足以讓我理解插圖實際上是如何工作的。如果任何人都可以解釋這一點,或鏈接到一個教程,他們如何計算,這將是更好的。

我目前已將頂部和底部設置爲0,因爲理論上它們不需要重複,只是一個靜態左側大於靜態右側。右側的插圖僅用於圓形邊框,中間部分需要重複。

+0

不要問同樣的問題兩次。你已經問過這個http://stackoverflow.com/questions/15702974/resizing-image-using-capinsets/15703301 – matt

+0

這個問題其實更多的是關於如何計算任何按鈕的插入信息,用不同的語言 – StuartM

+0

@matt - 請刪除我沒有能力 – StuartM

回答

0

如果你使用圖像的視網膜確保你後綴名@2x
另請注意,您需要以單位(而不是像素)指定意圖。

UIImage *facebookButton = [[UIImage imageNamed:@"FacebookLogin"] 
         resizableImageWithCapInsets:UIEdgeInsetsMake(0,40,0,10)];