iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 12
0

昨天我們第一次嘗試使用 Auto Layout 來取代以往的定位方式。

今天,我們再稍微多探索一下 Auto Layout 的使用。

試著在原本的 logoView 上面加一個紫色的 topIMGContainerView。


//step 1: set the height
    topIMGContainerView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.5).isActive = true  // 高度設定為整個 view 的一半
    topIMGContainerView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    topIMGContainerView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    topIMGContainerView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
   topIMGContainerView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
   topIMGContainerView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
  // but let use leading and trailing anchor instead rightAnch & leftAnch, for the sake of some languages(ex: Arabic) go from right to left

不過,光是使用 rightAnchor leftAnchor 在某些情況下可能仍會使我們的畫面出現非預期的效果。
比方說在一些語言或國家,文字是從右到左的排序。
這時候,假如我們改以 leadingAnchor trailingAnchor 來設定 Auto Layout 的定位,就可以避免掉這個問題了。

    topIMGContainerView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    topIMGContainerView.trailingAnchor.constraint(equalTo:view.trailingAnchor).isActive = true

https://ithelp.ithome.com.tw/upload/images/20171231/20107694bqmNHBo2Em.png

不過此時,由於我們的 topIMGContainerView 佔據了整半個螢幕,也涵蓋了原本 logoView 的位置。所以 logoView 就被蓋在 topIMGContainerView 下面看不見了。

因此,我們必須根據 logoView 之於 topIMGContainerView ,對 logoView 重新進行定位。

首先,讓 logoView 出現於 topIMGContainerView 之中。

topIMGContainerView.addSubview(logoView)

接著,再進行相應於 topIMGContainerView 的定位。

    logoView.centerXAnchor.constraint(equalTo: topIMGContainerView.centerXAnchor).isActive = true
    logoView.centerYAnchor.constraint(equalTo: topIMGContainerView.centerYAnchor).isActive = true

即可以讓 logoView 重新在 topIMGContainerView 中定位了!

完成!
https://ithelp.ithome.com.tw/upload/images/20171231/20107694br8XOdqicT.png

...
讓我們在 2018 的鐵人文中再次相見囉!


上一篇
DAY 11: Auto Layout 定位方式
下一篇
DAY 13: 初試 Animation
系列文
Swift 學習目標 -- 30 天送審第一支APP33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言