其實好像也不是什麼多驚悚的秘密,只是UIButton還提供了一些小特效。
但我發現用的人好像不多,所以知道的人好像也不多,是因為不重要嗎?
shadow offset定義了title陰影的位移,需搭配陰影顏色。
CGSize的width為陰影的x軸位移量,向右為正;height為y軸位移量,向下為正。
newButton.setTitleShadowColor(.red, for: .normal)
newButton.titleLabel?.shadowOffset = CGSize(width: 5, height: 5)
如果將reversesTitleShadowWhenHighlighted設為true,則在按鈕狀態為highlighted時,shadow offset的位置會被上下左右翻轉(shadow offset的width及height乘上(-1))。
newButton.reversesTitleShadowWhenHighlighted = true
這個attribute提供了button一些特效,
其中showsTouchWhenHighlighted如果設定為true,則會在按鈕狀態highlighted時出現白色光點的特效(下圖左);
adjustImageWhenHighlighted為true則會在highlighted時反白按鈕(下圖右上),
而adjustImageWhenDisable若為true,則按鈕在disable的狀態下,圖片會變成半透明的(下圖右下)。
line break決定了當title的內容超過按鈕邊界時的處理方式,屬於titleLable裡的方法,實作程式碼如下:
newButton.titleLabel?.lineBreakMode = NSLineBreakMode.byTruncatingMiddle
預設的處理方式為Truncating Middle,會只顯示頭尾,其他的處理方式如下:
從上面的programming可以看得出來,clip是把超出的部分截斷;wrap是換行,有依據character跟word換行2種;而truncate則是把部分文字用...省略,有省略前中後的文字3種。
edge inset決定了你的button內容的邊緣,也就是留白處,預設值為0。可以分別設定image、title或兩者同時(content)。
//阿寶和finn底部留40.0的edge
finnButton.contentEdgeInsets.bottom = 40.0
//jack左側留70的edge
jackButton.titleEdgeInsets.left = 70.0
不知道大家有沒有發現,button的配置都是圖左字右,其實有個semanticContentAttribute的變數可以交換button裡image跟label的位置。
不過因為這麼變數是從UIView繼承來的,所以我也不知道,感謝大學長游諭~
讓我們將之前的老皮按鈕加上這行程式碼,就可以看到老皮的圖文位置交換了:
jackButton.semanticContentAttribute = UISemanticContentAttribute.forceRightToLeft
不過神奇的是,UISemanticContentAttribute裡還有一個foreLeftToRight,用下去就什麼事都沒有發生。
到底右換左OK,左換右就不OK是什麼概念?
身為一個App工程師,自己做的App怎麼能只甘於在一個地區上架呢?apple提供了Internationalization and Localization Guide,讓你的app推向國際!而button內的title(甚至是image)就是支援internationalization與localization的。
internationalization就是使app適合於不同語言及地區,具體作法大抵如下:
而localization就是將你國際化了的app翻譯成不同的語言:
最後進行測試:
至於詳細的做法,我也沒有細看,而且再講下去好像就有點偏離主題了。
有興趣的人可以參考這份文件:
Internationalization and Localization Guide
apple為了使障礙者也能使用產品,在Mac OS X v10.4之後加入了VoiceOver這個軟體來輔助障礙者,而UIButton也支援這個功能。
當你的VoiceOver是被允許運作的時候,每點擊一次按鈕,語音就會回饋title、特性、以及相關說明給使用者。
例如點擊camera裡的option button時,VoiceOver會回饋"Options. Button. Shows additional camera options."給使用者。是不是很貼心呢~
那UIButton就介紹到這邊啦~看來我又更熟悉UIButton一點了呢
下一回開始要來認識UIDatePicker。
順帶一提,button範例裡的阿寶老皮圖片是我在google抓的,忘記註明出處了。
沒錯我就是活寶粉,我愛阿寶~~❤️(阿寶表示驚悚)