iOS:如何让UIButton在按下时变成蓝色阴影?

时间:2011-09-04 19:55:04

标签: iphone ios ipad uibutton

我正试图模仿iphone上iPod应用程序中随机播放按钮的行为。 我希望我的随机播放按钮的行为与ipod的按钮完全相同 - 当用户按下按钮时,它会变为蓝色阴影并保持这样状态,直到用户再次按下按钮,然后它恢复其白色阴影。 To show you what I mean I attach an image

当然,一种选择是保存为两种状态的图像。问题是我怀疑可能以编程方式这样做。我有一个越狱手机,所以我查看了ipod应用程序的文件夹,看到只有常规的shuffle图标(白色阴影,没有蓝色阴影)。我还发现只有蓝色背景的png。

那你觉得怎么样?可以在不使用两种不同色调的图像的情况下实现吗?

3 个答案:

答案 0 :(得分:2)

我能想象的唯一方法是为UIButton定制绘图。因此,为正常状态制作一个.png图像,为压制的蓝色状态制作一个.png图像。因此,为按钮创建一个插座和一个动作。还要在头文件中添加BOOL *状态。然后在viewDidLoad中添加以下代码:

[yourButton setBackgroundImage:@"normalimage.png" forState:UIControlStateNormal];
[yourButton setBackgroundImage:@"normalimage.png" forState:UIControlStateHighlited];
state = NO

在按钮的操作中添加以下代码:

if (state == NO) {
    [yourButton setBackgroundImage:@"blueimage.png" forState:UIControlStateNormal];
    [yourButton setBackgroundImage:@"blueimage.png" forState:UIControlStateHighlited];
    state = YES;
}
else {
    [yourButton setBackgroundImage:@"normalimage.png" forState:UIControlStateNormal];
    [yourButton setBackgroundImage:@"normalimage.png" forState:UIControlStateHighlited];
    state = NO;
}

非常简单的东西。我是通过记忆写的,你真的只需要思考一下就可以了解这个......

答案 1 :(得分:2)

您使用自己的标准按钮或图标吗? 我通过覆盖uRiew的drawRect:方法来解决同样的问题,使你自己的按钮根据它们是否被按下而不同地绘制自己。

你需要: UIView子类中的实例变量,用于保存状态(按下/未按下)。

UIView子类中的自定义绘图drawRect:方法在任一状态下绘制按钮/图标。

视图控制器中的UITapGestureRecognizer代码用于处理检测触摸。

它有点重新发明轮子以获得真正的自定义按钮,但你会。拥有非常漂亮和独特的用户界面,这就是iOS的全部内容和b。你将学习很多以其他方式使用的东西。这些工具由Apple完整记录,可以查找CoreGraphics / Quartz编程指南和手势识别指南。

答案 2 :(得分:0)

最简单的方法是制作2个版本的按钮,一个正常,一个处于“按下”状态。

另一方面,这很自然地在UITabBar上实现。