iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
自我挑戰組

一個令我自豪的App完成之路系列 第 21

NSLayoutConstraint使用 Day21

  • 分享至 

  • xImage
  •  

使用AutoLayout分為兩種方式

  • writing Code
  • Use Interface Builder
    • Xib
    • Storyboard

使用Writing Code的方式就會使用到NSLayoutConstraint

使用NSLayoutConstraint

AutoResize關閉

view.translatesAutoresizingMaskIntoConstraints = false

使用方式

A.width = B.width * 0.8 + 20

屬性 = 屬性 * 倍數 + 常數

NSLayoutConstraint建構Constraint

@MainActor class NSLayoutConstraint : NSObject

啟動NSLayoutConstraints

  • 設定Constraints
  • 啟動Constraints
NSLayoutConstraints(items: 被限制的物件  ,
										attribute: 對齊的位置(.top),
										toItem:   參考物,
										attribute: 對齊的位置(.top),
										multiplier: 使用方法中的倍數,
										constant:  使用方法中的常數,
										).isActive = true

attribute: 
// 對齊某邊
.leading/.trailing/.top/.bottom
// x,y置中的位置
.centerX/.centerY
// 設定width,height
attribute:.width/.height
attribute:.notAnAttribute

// 單個Constraint成立
.isActive = true
// 多筆Constraint生效
let leadingConstraint = NSLayoutConstraint(....)
or
let constraints = [ NSLayoutConstraint們]

NSLayoutConstraint.activate([leadingConstraint])
or
NSLayoutConstraint.activate(constraints)

使用NSAnchor建構Constraint

Anchor

拉Layout對齊某邊

VC1.leadingAnchor.constraint(equalto:VC2.leadingAnchor,multiplier:1 ,constant:0).isActive = true

x,y置中位置

VC1.centerXAnchor.constraint(equalTo:VC2.centerXAnchor,mutipler: 1, constant:0).isActive = true

設定width、height值

VC1.widthAnchor.constraint(equalToConstant:20).isActive = true

調整NSLayoutConstraint

let heightConstraint = VC1.heightAnchor.constraint(equalToConstant:20)

// 修改
heightConstraint.constant = 100

參考網址:

AutoLayout Programmatically表示

Auto Layout

Auto Layout in Swift: Writing constraints programmatically

Understanding Auto Layout

Apple Developer Documentation


上一篇
ISBN Barcode Scanner實作 Day 20
下一篇
通過SafariViewController查詢網站 Day22
系列文
一個令我自豪的App完成之路32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言