簡體   English   中英

點擊時更改UIButton的圖像

[英]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”,但所有這一切都會使原始圖像變得更暗。 它甚至沒有更改為新圖像,並且只有在按住按鈕時它才會顯示它的效果。

設置UIControlStateHighlightedUIControlStateSelected狀態的圖像:

[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文件中,如下所示:

CTRL +拖動故事板

選擇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.

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