2011-09-04 55 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