[英]Changing a UIButton's image when it's tapped
我有一個UIButton,我以編程方式創建並添加到UITableViewCell。
我已成功設置它,這樣如果你點擊按鈕並保持按住它,它將變為我為“突出顯示狀態”設置的圖像,但這還不夠好。
當用戶點擊按鈕時,我需要它完全切換到新圖像。 如果用戶再次點擊該按鈕,我希望它更改回原始圖像。
我希望每次點擊時圖像都會改變。 現在它會改變,如果他們點擊並繼續按住它,但一旦完成按住它就會切換回原始圖像。
這是我到目前為止我的按鈕代碼:
UIImage *addFriendButtonImage = [UIImage imageNamed:@"SliderThumb-Normal-G"];
UIImage *addFriendButtonImageHighlighted = [UIImage imageNamed:@"SliderThumb-Normal"];
UIButton *addFriendButton = [[UIButton alloc]init];
addFriendButton.frame = CGRectMake(237, -10, 64, 64);
[addFriendButton setImage:addFriendButtonImage forState:UIControlStateNormal];
[addFriendButton setImage:addFriendButtonImageHighlighted forState:UIControlStateHighlighted];
我也嘗試將新圖像的狀態設置為“UIControlStateSelected”,但所有這一切都會使原始圖像變得更暗。 它甚至沒有更改為新圖像,並且只有在按住按鈕時它才會顯示它的效果。
設置UIControlStateHighlighted
和UIControlStateSelected
狀態的圖像:
[addFriendButton setImage:addFriendButtonImage forState:UIControlStateNormal];
[addFriendButton setImage:addFriendButtonImageHighlighted forState:UIControlStateHighlighted];
[addFriendButton setImage:addFriendButtonImageHighlighted forState:UIControlStateSelected];
然后聽UIControlEventTouchUpInside
:
[addFriendButton addTarget:self action:@selector(handleTouchUpInside:) forControlEvents:UIControlEventTouchUpInside];
然后更新所選狀態:
- (void)handleTouchUpInside:(UIButton *)sender {
sender.selected = !sender.selected;
}
你想要的是用[addFriendButton setImage:someImage forState:UIControlStateNormal];
設置新圖像[addFriendButton setImage:someImage forState:UIControlStateNormal];
每次用戶點擊addFriendButton
(查找事件UIControlEventTouchUpInside
)。
如果需要,您仍然可以在[addFriendButton setImage:someImage_highlighted forState:UIControlStateHighlighted];
上分配適當的高亮圖像[addFriendButton setImage:someImage_highlighted forState:UIControlStateHighlighted];
您需要為按鈕創建IBAction
方法。 如果您使用故事板設計視圖控制器,請轉到助理編輯器中的相應視圖控制器(點擊圖標 在Xcode窗口的右上角),CTRL +將按鈕中的一條線拖到視圖控制器類的.h文件中,如下所示:
選擇Action
並輸入touchUpInsideButton
方法的命名。
重復相同的步驟為按鈕創建屬性。 (但選擇Outlet
而不是Action
並為你的按鈕命名,如myButton
。)現在你應該在你的.h文件中有這兩行:
@property (strong, nonatomic) IBOutlet UIButton *myButton;
- (IBAction)touchUpInsideButton:(id)sender;
現在轉到視圖控制器的.m文件。 搜索新創建的操作方法- (IBAction)touchUpInsideButton:(id)sender
並輸入以下代碼以在用戶點擊按鈕時更改按鈕的圖像:
- (IBAction)touchUpInsideButton:(id)sender {
UIImage *myImage = [UIImage imageNamed:@"myImageName"];
[self.myButton setImage:myImage forState:UIControlStateNormal];
}
(只要用戶點擊按鈕,您就可以在此方法中放置任何代碼。)如果您使用的是故事板,我建議使用此方法。 如果沒有,請參閱@Corey的回復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.