0

使用 XCode,我试图弄清楚当有人单击或按下我的一个按钮之前如何显示不同的图像,然后再被带到第二个屏幕。例如,我的主屏幕上有一个联系人图标。当用户单击该图标时,它应该在点击时变为较暗的版本,然后再转到联系人屏幕。任何帮助表示赞赏。

-(IBAction) ButtonPressed :(id)sender
{
UIButton *tempButton = (UIButton *) sender;
int tag = tempButton.tag;
NSString *viewName;
switch (tag) 
{
    case 1:
        [FlurryAnalytics logEvent:@"Contact-Screen"];
        viewName = @"ContactScreen";
        if( self.appDelegate.sound)
            [Click play];
        [self.appDelegate moveToView:viewName];
        break;
}
}
4

3 回答 3

3

很简单,您只需为按钮选择状态设置不同的图像:

[myButton setImage:[UIImage imageNamed:@"mySelectedImage"] forState:UIControlStateSelected];

或在界面生成器中:

在此处输入图像描述

其他UIControlState's包括:

enum {
   UIControlStateNormal               = 0,
   UIControlStateHighlighted          = 1 << 0,
   UIControlStateDisabled             = 1 << 1,
   UIControlStateSelected             = 1 << 2,
   UIControlStateApplication          = 0x00FF0000,
   UIControlStateReserved             = 0xFF000000
};

控件的状态;一个控件一次可以有多个状态。根据控件的不同,状态的识别方式也不同。例如,可以将 UIButton 实例配置为(使用 setImage:forState: 方法)在其处于正常状态时显示一个图像,而在突出显示时显示另一个图像。

于 2012-09-08T03:15:36.593 回答
1

据我在 Xcode 中所注意到的,每当您决定实现自定义按钮并且不指定在 UIControlStateSelected 状态下使用的第二张图像时,当用户点击按钮以显示该按钮时,Xcode 会自动为您使按钮变暗事实上,他们被窃听了。

于 2012-09-08T03:40:42.543 回答
0

0x7f 答案几乎是正确的(正确的状态值是“突出显示”而不是“选定”)。对于 Swift 用户来说,这将是

myButton.setBackgroundImage(UIImage(named: "myButtonImagePressed.png"), forState: .Highlighted)
于 2014-11-05T04:26:57.610 回答