<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          不一樣的按鈕

          共 2311字,需瀏覽 5分鐘

           ·

          2021-07-02 01:01

          ????關(guān)注后回復(fù) “進(jìn)群” ,拉你進(jìn)程序員交流群????

          作者丨白老板
          來(lái)源丨知識(shí)小集(ID:zsxjtip)



          本文整理自 WWDC 21 《Meet the UIKit button system》,以后寫按鈕可以更輕松了

          按鈕,在我們的應(yīng)用程序中是最常見(jiàn)不過(guò)了,大的小的、有圖像的沒(méi)圖像的、有背景的沒(méi)背景的、紅的藍(lán)的綠的,基本上承載了用戶交互的大部分工作。

          而 iOS 15 的 UIKit 又為我們帶來(lái)更多按鈕樣式。以下是新的 UIKit 提供的四種基本樣式,


          除了樣式外,新的 UIKit 為我們帶來(lái)更強(qiáng)大的按鈕,像支持動(dòng)態(tài)類型、內(nèi)置多行文本支持。有了這些新功能,我們可以更靈活地定制按鈕,讓按鈕更加炫目。

          接下來(lái),讓我們一起看看如何使用新的按鈕。


          UIButtonConfiguration

          一切得從 UIButtonConfiguration 開(kāi)始。我們先來(lái)看看 UIButtonConfiguration 的文檔

          You can configure and update a button with a UIButtonConfiguration. A button configuration contains all the customization options available with other methods, such as setTitle:forState:, and can serve as a replacement for those methods. Alternatively, you can use a configuration in combination with these other methods and adopt new button behaviors and appearance without rewriting your customized UIButton code.

          也就是說(shuō),我們可以使用這個(gè)類來(lái)配置按鈕的行為和外觀,而無(wú)需重新自定義一個(gè) UIButton 來(lái)實(shí)現(xiàn)我們想要的效果。

          這個(gè)類使用起來(lái)也很簡(jiǎn)單,幾行代碼就可以搞定。下面是一個(gè)最簡(jiǎn)單的例子,設(shè)置按鈕的 configuration 屬性,就可以看到 Sign In 按鈕的變化。



          我們也可以單獨(dú)定義 UIButtonConfiguration 實(shí)例,并設(shè)置一些諸如文本、圖片等屬性值,再使用這個(gè)實(shí)例來(lái)創(chuàng)建按鈕,如下面的 Add to Card 按鈕


          另外,我們還可以設(shè)置按鈕的 configurationUpdateHandler,讓按鈕在狀態(tài)發(fā)生改變時(shí)自動(dòng)去執(zhí)行一些操作


          不過(guò),我們需要在某個(gè)節(jié)點(diǎn)調(diào)用按鈕的 setNeedsUpdateConfiguration 方法


          如果需要在按鈕中顯示菊花,只需要設(shè)置 showsActivityIndicator 為 true 即可,也可以自己更改加載器的圖片


          要調(diào)整按鈕布局也很方便,只需要修改一些屬性值即可


          我們還可以配置許多其它屬性,像 baseBackgroundColor、baseForegroundColor、cornerStyle 和 buttonSize 等等。



          Toggle 按鈕

          切換按鈕(UISwitch)非常適合做開(kāi)關(guān)。而很多場(chǎng)景下的按鈕,也有類似 UISwitch 的需求,像日歷頂部 UIBarButtonItems,這個(gè)是啟用和禁用日期詳細(xì)信息的按鈕,它也可以有一個(gè) selected 屬性。


          為了讓一個(gè)按鈕變成切換按鈕,只需要設(shè)置按鈕的 changesSelectionAsPrimaryAction 值為 true。


          很簡(jiǎn)單吧。


          Pop-up 按鈕

          如果我們需要更多選項(xiàng),則可以使用彈出按鈕。彈出按鈕更像是下拉按鈕的延伸,不過(guò)它能確保選擇一個(gè)且僅選擇一個(gè)菜單元素。創(chuàng)建起來(lái)也很方便,類似于以后效果


          實(shí)現(xiàn)上只需要給按鈕分配一個(gè)菜單,設(shè)置按鈕的 showsMenuAsPrimaryAction 為 true,讓按鈕成為一個(gè)菜單按鈕,然后再設(shè)置 changesSelectionAsPrimaryAction 為 true 即可



          Mac Catalyst

          新按鈕最牛的一點(diǎn)是可以自適應(yīng) Mac,包括下拉、彈出和切換按鈕,例如以下效果是 iOS 上的


          而在 Mac Catalyst 的顯示效果如下


          不需要做任何修改,即可無(wú)縫切換。


          UIMenu

          UIMenu 與 UIButton 和 UIBarButtonItem 能很好地搭配在一起,可以進(jìn)行很多很棒的交互。菜單在新系統(tǒng)中也得到了改進(jìn),允許在菜單中創(chuàng)建層次結(jié)構(gòu),而按鈕的功能也從這些改進(jìn)中獲益。


          例如以下代碼,topMenu 中有一個(gè)子菜單 sortMenu,這個(gè)子菜單只允許選中一個(gè)元素



          小結(jié)

          以上就是如何在應(yīng)用中更好地使用新版的按鈕,通過(guò)配置 UIButtonConfiguration,可以解鎖更豐富的按鈕樣式,我們不再需要去自己實(shí)現(xiàn) UIButton 子類,就可以做很多事情了。

          -End-


          最近有一些小伙伴,讓我?guī)兔φ乙恍?nbsp;面試題 資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來(lái),可以說(shuō)是程序員面試必備!所有資料都整理到網(wǎng)盤了,歡迎下載!


          點(diǎn)擊??卡片,關(guān)注后回復(fù)【面試題】即可獲取

          在看點(diǎn)這里好文分享給更多人↓↓

          瀏覽 96
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美aa视频| 超碰碰免费 | 日韩口爆 | 日韩小穴| 国产成人精品AV在线观 |