繁体   English   中英

如何创建可以更改图像(如圆角矩形)的自定义按钮

[英]How do i create a custom button that can change an image like rounded rect

我有两个图像用于按钮,一个用于常规,一个用于选择。 我希望它的作用与您按下按钮时圆形的rect按钮的作用相同,按钮的图像会发生变化,如果您向外拖动,则图像会变回正常状态。 这是我尝试过的。

首先,我制作了一个自定义视图控制器,然后在实现中添加了方法,这就是您在此处看到的。 我将这些方法连接到我的2个按钮上,即播放“按钮”和“设置”按钮。

- (IBAction)playButtonSelected:(UIButton *)sender {  //this is for event touchDown
       [sender setImage:[UIImage imageNamed:@"PlayButtonSelected.png"] forState:UIControlStateNormal];

}


- (IBAction)playButtonNotSelected:(id)sender { //this is for event touchUpOutside
    [sender setImage:[UIImage imageNamed:@"PlayButton.png"] forState:UIControlStateNormal];

}



- (IBAction)settingsButtonSelected:(UIButton *)sender { //this is for event TouchDown
        [sender setImage:[UIImage imageNamed:@"SettingsButtonSelected.png"] forState:UIControlStateNormal];
}

- (IBAction)settingsButtonNotSelected:(id)sender { //this is for event touchUpOutside
      [sender setImage:[UIImage imageNamed:@"SettingsButtons.png"] forState:UIControlStateNormal];
}

好吧,我做到了,效果很好,但是有两个问题。

第一:如果我有20个按钮,则必须有40种方法。 这并不是一个真正的问题,我只是认为这是一个潜在的问题。

第二:当我将按钮拖到外面时,我希望它在用户实际松开手指之前切换到正常图像。 截至目前,该图像仅在手指松开时默认,而在手指移动一定距离时不默认,因此touchUpInside命令将不会运行。 我想要这个,因为它基本上是标准的。 并且这还将帮助用户理解,如果他愿意,他可以收回点击按钮的冲动行为。

太好了,任何帮助都会大有帮助!

您只需要设置一次选定的图像和普通图像(例如,创建按钮时)

“状态”参数可让您为不同的状态设置不同的图像。 您只需要编写一次此代码:

[playerButton setImage:[UIImage imageNamed:@"PlayButton.png"] forState:UIControlStateNormal];
[playerButton setImage:[UIImage imageNamed:@"PlayButtonSelected.png"] forState:UIControlStateSelected];

编辑:您也可以从属性检查器的Interface Builder中执行此操作

正常状态选定州

既然回答了第二部分,我将回答第一部分,

假设您以编程方式创建按钮,则可以为每个按钮分配标签号,并为所有按钮设置相同的选择器方法。 您可以通过在选择器方法中识别标签号来区分按下了哪个按钮。 与此类似: stackoverflow.com/a/11756445/1479411

如果使用的是界面生成器,则可以将所有按钮连接到相同的IBAction方法,并将标记号手动放置在每个按钮的属性检查器中。 同样,您可以通过IBAction方法中的标记号来区分。

另外,如果按钮具有完全不同的功能,我将使用#define标识按钮。 这减少了以后编码中的错误。

#define SETTINGS  1
#define PLAY      2
#define FUNCTION1 3
#define FUNCTION2 4
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM