2010-06-20 68 views
11

這個效果如何實現?代碼片段非常受歡迎。UIBarButtonItem上的自定義背景/透明背景?

這可以在Notes應用程序和App Store上的其他應用程序中看到。

似乎無論是導航控制器上的按鈕都是透明的,並顯示導航控制器的自定義背景,或者他們自己有一個自定義背景適用於他們。關於如何實現的任何想法?

編輯:

下面是iPhone的iBooks應用程序的一個例子。正如你所看到的,不僅UIButtons,而且分段控件都有自定義背景。我在想,有一種方法可以將透明度/背景全局設置爲不同的界面元素。

example http://c0839932.cdn.cloudfiles.rackspacecloud.com/iBooks%201.1%20-%206.png

+0

我填充了一個bug(雷達:12433673)並添加了一個示例代碼項目。 – Gujamin 2012-10-15 22:02:34

回答

13

如果你想有UIBarButtonItem無處不在您的應用程序,你可以做的是在你的AppDelegate.m和你application:didFinishLaunchingWithOptions:方法,你可以寫

[[UIBarButtonItem appearance] setBackgroundImage:[[UIImage alloc] init] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

這將創建一個空的圖像,它會設置UIBarButtonItem對該圖像的背景。把它寫入AppDelegate你會確保你在使用UIBarButtonitem的任何地方都會有透明的背景,甚至是後退按鈕。

+0

工作就像一個魅力 – Zerho 2013-06-30 16:04:34

+0

非常感謝....你救了我兄弟 – 2013-12-28 04:58:25

4

我不認爲你可以把它透明的只是通過設置某種屬性(但我可能是錯的)。

查看UIBarButtonItem文檔。有init方法將採取自定義視圖或圖像,並從它創建一個UIBarButtonItem。因此,創建一個視圖或一個圖像與你想要的外觀和使用。你可能想嘗試的一件事是建立一個UIButton你希望它看起來的樣子,然後做[[UIBarButtonItem alloc] initWithCustomView:button];

另一個解決方案是發送您的UINavigationBartintColor屬性爲任何你想要的顏色,按鈕將採取在那個顏色上。

3

您還可以創建標準UIButton並將其樣式設置爲自定義,併爲該按鈕設置圖像或背景顏色並將其拖動到UINavigationBar上。

+0

當然,當我點擊提交時,我看到Macatomy就是這麼說的。所以呃...他們說什麼:) – AtomRiot 2010-06-21 00:26:03

1

你也可以使用外觀代理到UIBarButtonItems BackgroundImage屬性設置爲自己的透明圖片:

UIImage *buttonImage = [[UIImage imageNamed:@"barButton"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 8, 12, 8)]; 
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setBackButtonBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

注意,我覺得有插圖中設置爲特定值(11月13日時的錯誤嗎? ?)所以如果你遇到問題,可以嘗試改變這些插入符號,因爲你可能偶然發現了這個錯誤。