2013-03-19 119 views
2
UIImage * imgBtnReloadAllButton = [UIImage resizeableImageWithCapInsets2:UIEdgeInsetsMake(5, 5, 5, 5) withName:@"search_in_this_area"]; 
[self.btnReloadAllButton setBackgroundImage:imgBtnReloadAllButton forState:UIControlStateNormal]; 


PO([self.btnReloadAllButton backgroundImageForState:UIControlStateHighlighted]); 
PO([self.btnReloadAllButton backgroundImageForState:UIControlStateNormal]); 
PO([self.btnReloadAllButton backgroundImageForState:UIControlStateSelected]); 
PO([self.btnReloadAllButton backgroundImageForState:UIControlStateReserved]); 
PO([self.btnReloadAllButton backgroundImageForState:UIControlStateApplication]); 
PO([self.btnReloadAllButton backgroundImageForState:UIControlStateDisabled]); 

够简单。这是我所看到的:当用户按下按钮时,为什么按钮看起来不同?

2013-03-19 15:22:22.349 BadgerNew[1724:c07] [self.btnReloadAllButton backgroundImageForState:UIControlStateHighlighted]: <_UIResizableImage: 0xd6b5a80> 
2013-03-19 15:22:22.350 BadgerNew[1724:c07] [self.btnReloadAllButton backgroundImageForState:UIControlStateNormal]: <_UIResizableImage: 0xd6b5a80> 
2013-03-19 15:22:22.350 BadgerNew[1724:c07] [self.btnReloadAllButton backgroundImageForState:UIControlStateSelected]: <_UIResizableImage: 0xd6b5a80> 
2013-03-19 15:22:22.350 BadgerNew[1724:c07] [self.btnReloadAllButton backgroundImageForState:UIControlStateReserved]: <_UIResizableImage: 0xd6b5a80> 
2013-03-19 15:22:22.382 BadgerNew[1724:c07] [self.btnReloadAllButton backgroundImageForState:UIControlStateApplication]: <_UIResizableImage: 0xd6b5a80> 
2013-03-19 15:22:22.383 BadgerNew[1724:c07] [self.btnReloadAllButton backgroundImageForState:UIControlStateDisabled]: <_UIResizableImage: 0xd6b5a80> 
(lldb) po imgBtnReloadAllButton 
$0 = 0x0d6b5a80 <_UIResizableImage: 0xd6b5a80> 

所以它看起来像所有按钮状态指向相同的图像,即图像0xd6b5a80

然而,当用户点击该按钮,按下按钮后,但提起他们的肮脏的手指前,按钮看起来不同。

基本上,当我按下按钮时,按钮的底角不再是圆的。

发生了什么事?

+0

如果你不希望出现这种情况,只需设置[self.btnReloadAllButton了setBackgroundImage:imgBtnReloadAllButton forState:UIControlStateHighlighted]。 [self.btnReloadAllButton setBackgroundImage:imgBtnReloadAllButton forState:UIControlStateSelected]; – 2013-03-19 08:33:06

回答

7

即使未设置特定的高亮显示图像,按钮在进入高亮状态时会调整其图像。为了防止这种情况,使用方法:

imgBtnReloadAllButton.adjustsImageWhenHighlighted = NO; 
+0

调整是什么意思? – 2013-03-19 08:55:28

+0

我认为这只会影响图像的亮度。基本上,当我按下按钮时,按钮的底角不再是圆的。 – 2013-03-19 08:57:21

+0

也许截图会有助于这个问题? – jrturton 2013-03-19 11:33:38

0

这是因为当您按下按钮时,iOS呈现您用作背景图像的图像。您可以通过将图像设置为图像而不是背景图像来防止这种情况。