2013-12-13 70 views
2

我在我的應用程序中有一個UIButton,它非常小。有時可能很難點擊它。有沒有辦法在按鈕周圍有20px的邊距,保持圖像的大小相同?這裏是我的代碼:設置UIButton的框架,但保持圖像相同的尺寸

self.helpButton= [UIButton buttonWithType:UIButtonTypeCustom]; 
[self.helpButton setImage:[UIImage imageNamed:@"Info Button.png"] forState:UIControlStateNormal]; 
[self.helpButton addTarget:self 
      action:@selector(showHelp) 
forControlEvents:UIControlEventTouchUpInside]; 

if ([[ UIScreen mainScreen ] bounds ].size.height == 568) { 
    self.helpButton.frame = CGRectMake(280.0, 528.0, 20, 20); 
} else { 
    self.helpButton.frame = CGRectMake(280.0, 440.0, 20, 20); 
} 

基本上,我想有一個更大的區域點擊,但保持按鈕相同的大小。

回答

1

子類UIButton並覆蓋backgroundRectForBounds:(或contentRectForBounds:或任何適合您的用例的作品)。

+0

這是唯一的方法嗎?這似乎相當複雜 – user2397282

+1

這是一個意見問題。一個人的複雜是另一個人的易感。爲什麼不嘗試呢? – matt

3

嘗試setImageEdgeInsets。檢查這個。

if ([[ UIScreen mainScreen ] bounds ].size.height == 568) { 
     self.helpButton.frame = CGRectMake(280.0, 528.0, 40, 40); 
    } else { 
     self.helpButton.frame = CGRectMake(280.0, 440.0, 40, 40); 
    } 

    [self.helpButton setImageEdgeInsets:UIEdgeInsetsMake(10, 10, 10, 10)]; 
+0

這改變了按鈕的大小 – user2397282

0

如果你的按鈕背景顏色清晰,你可以增加按鈕的大小。我最近爲一個帶有小圖片的刪除按鈕做了這個:

UIImage *deleteImage = [UIImage imageNamed:@"btnDelete"]; 

    CGSize btnSize = CGSizeMake(deleteImage.size.width*2, deleteImage.size.height*2); 

    self.deleteButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

    [_deleteButton setImage:deleteImage forState:UIControlStateNormal]; 

    _deleteButton.frame = CGRectMake(0,0,btnSize.width,btnSize.height); 
+0

事情是,我的圖像是相當大的,我縮小到20px x 20px – user2397282

+1

我建議添加一個圖像到您的項目與正確的大小,然後使用它。或者,你可以創建一個單獨的'UIImageView'大小的方式,並將其添加爲按鈕的子視圖,而不是設置按鈕的圖像。 – ChrisH

+0

另外,這不會把圖像放在框架的右上角嗎? – user2397282

相關問題