2011-09-04 28 views
1

我试图模仿iPhone上iPod应用程序中洗牌按钮的行为。 我希望我的随机播放按钮的行为与ipod的按钮完全相同 - 当用户按下按钮时,它会变为蓝色并保持不变,直到用户再次按下该按钮,然后它恢复其白色阴影。 To show you what I mean I attach an image iOS:如何使UIButton在按下时变为蓝色阴影?

一种选择当然是要保存图像的两种状态。问题是,我怀疑也许可以通过编程来完成。我有一部越狱手机,所以我查看了iPod应用程序的文件夹,并在那里看到只有普通的随机图标(白色阴影,没有蓝色阴影)。我还发现了一个只有蓝色背景的PNG。

那么你怎么看?如果不使用两个不同色调的图像,是否可以实现?

回答

2

我能想象的唯一方法是为UIButton定制绘图。因此,为正常状态制作一个.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; 
} 

很简单的东西。我写了这一切的记忆,你真的只是想有点来到这个任何想法....

+0

好吧,我放弃了...我会使用标准(你)的方法:) – Alex1987

0

可以实现最简单的方法就是让2个版本的按钮,一个正常的和一个处于“按下”状态。

另一方面,这自然是在UITabBar上实现的。

+0

我可以把UITabBarItem作为一个项目在navigationItem中吗? – Alex1987

+0

从技术上讲,你可以,只需通过uitabbar的子视图并虹吸出按钮视图。 – WrightsCS

2

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

你需要有: 一个实例变量的UIView子类来保存状态(按下/未按下)。在UIView的

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

在视图控制器UITapGestureRecognizer代码来处理检测触摸。

它有点重新发明轮子来获得真正的自定义按钮,但你会a。有真正美丽和独特的用户界面,这是iOS的全部内容和b。你会学到一个你以其他方式使用的很多东西。这些工具由Apple完善记录,查找CoreGraphics/Quartz编程指南和手势识别指南。

+0

我加入这个,我认为这是如何在iOS中制作漂亮的按钮的最后一句http://robots.thoughtbot.com /后/ 33427366406 /设计换IOS-驯服-的UIButton – Cocoadelica