今天跟朋友吃飯的時候,剛好問起有幾個東西怎麼做。在這邊簡單寫一下。
※ 在 iPad 上面,PopOver 外面都有一個藍色的外框,看起來有點醜,有沒有什麼辦法可以把這個外框拿掉?
事實上,PopOver 總共有三種不同的樣式,除了外面有一種藍色的外框之外,還有一種是純白的背景,周圍只有一圈細細的黑線;另外一種樣式則是在 iBook.app 裡頭使用的,背景是鵝黃色,也就是 iBook.app 裡頭書籍頁面的背景顏色。所以,如果想要把藍色的外框換掉,可以試試看用白色背景的樣式。
不過,設定 PopOver 樣式這件事情,有點介於公開與不公開的 API 之間。在 UIPopoverController 的 Header file 裡頭,我們可以看到有個叫做 _popoverBackgroundStyle 的成員變數,基本上是被保護起來的,但是既然是 Objective C,我們其實可以透過 KVC 取得物件的成員。基本上 KVC 全都是公開的 API,但是用 KVC 去取用某個應該算是被保護起來的變數,也不知道算不算違反了蘋果的審核規定。總之,做是做得到,但是可能會有審核時被退件的風險。
[secondPopoverController setValue:[NSNumber numberWithInt:1] forKey:@"popoverBackgroundStyle"];
Value 可以設定成 0、1 與 2,0 就是預設樣式。
※ 在 UINavigationBar 的設計裡,只能夠在左右兩邊分別放一個 UIBarItem,但是 iPad 不像 iPhone 或 iPod Touch,iPad 的螢幕比較大,所以 上方的 navigation bar 也比較長,有沒有可能在 navigation bar 上面多放幾個 UIBarButton,有效使用版面空間呢?
我們來回想幾件事情:
- UINavigationBar 只能左右兩邊分別設 UIBarItem,不像 UIToolbar,UIToolbar 是可以放很多 UIBaritem。
- UIBarButtonItem 裡頭其實可以是 customized view。
- UIToolbar 其實是繼承自 UIView。
把這幾個要素加起來,我們就找到了 work around-首先產生一個 UIToolbar,裡頭放了一堆你想要的 UIBarItem,然後產生一個 UIBarItem,裡頭的 customized view 就是這個 UIToolbar,最後再把含有 UIToolbar 的 UIBarItem 設成 UINavigationBar 的 left item 或 right item 就好了。不過,通常是 right item,因為左邊往往要保留給回到上一頁的按鈕使用。
範例程式:http://drp.ly/1Ghweg。
Pingback: 【转】两个ipad小技巧 - iOS - 开发者问答