★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-sijhdrft-ma.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
目錄:[Swift]通天遁地Swiftios
本文將演示添加edges/top/bottom/leading/trailing的約束。git
首先確保在項目中已經安裝了所需的第三方庫。github
點擊【Podfile】,查看安裝配置文件。swift
1 source 'https://github.com/CocoaPods/Specs.git' 2 platform :ios, ‘12.0’ 3 use_frameworks! 4 5 target 'DemoApp' do 6 pod 'SnapKit' 7 end
根據配置文件中的相關配置,安裝第三方庫。微信
而後點擊打開【DemoApp.xcworkspace】項目文件。ide
在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】佈局
如今開始編寫代碼,建立一個滾動視圖,並在滾動視圖中添加一個標籤控件。post
1 import UIKit 2 //在當前的類文件中,引入已經安裝的第三方類庫 3 import SnapKit 4 5 class ViewController: UIViewController { 6 7 //添加一個布爾變量,用來標識是否已經給視圖對象添加了約束關係。 8 var didSetupConstraints = false 9 10 //初始化一個滾動視圖對象 11 let scrollView = UIScrollView() 12 //初始化一個內容視圖控件 13 let contentView = UIView() 14 15 //添加一個標籤控件 16 let label: UILabel = { 17 //初始化標籤 18 let label = UILabel() 19 //設置標籤的背景顏色爲橙色 20 label.backgroundColor = .orange 21 //設置標籤不限制內容的行數 22 label.numberOfLines = 0 23 //設置文字在超過標籤視圖邊界時的換行模式:按單詞分割換行。 24 //標籤末尾不會出現被分割的單詞。 25 label.lineBreakMode = .byClipping 26 //設置標籤控件的文字顏色爲白色 27 label.textColor = .white 28 //設置標籤的文字內容 29 label.text = NSLocalizedString("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", comment: "") 30 //返回設置好的標籤控件 31 return label 32 }() 33 34 override func viewDidLoad() { 35 super.viewDidLoad() 36 37 //將滾動視圖添加到根視圖中 38 view.addSubview(scrollView) 39 40 //設置內容視圖的背景顏色爲棕色 41 contentView.backgroundColor = UIColor.brown 42 //將內容視圖添加到滾動視圖中 43 scrollView.addSubview(contentView) 44 //將標籤添加到內容視圖中 45 contentView.addSubview(label) 46 47 //調用視圖對象的刷新約束的方法 48 view.setNeedsUpdateConstraints() 49 } 50 51 //添加一個方法,用來刷新視圖的約束關係 52 override func updateViewConstraints() { 53 54 //當尚未給視圖對象添加約束時, 55 //給控件添加約束關係 56 if (!didSetupConstraints) { 57 58 //給滾動視圖添加約束關係 59 scrollView.snp.makeConstraints { make in 60 //在滾動視圖和根視圖之間創建約束關係。 61 //設置滾動視圖和根視圖的邊距爲0。 62 //即滾動視圖的顯示區域,始終和根視圖保持相同。 63 make.edges.equalTo(view).inset(UIEdgeInsets.zero) 64 } 65 66 //給內容視圖添加約束關係 67 contentView.snp.makeConstraints { make in 68 //在內容視圖和滾動視圖之間創建約束關係。 69 //設置內容視圖和滾動視圖的邊距爲0, 70 //即內容視圖的顯示區域,始終和滾動視圖保持相同。 71 make.edges.equalTo(scrollView).inset(UIEdgeInsets.zero) 72 //設置內容視圖的寬度始終等於滾動視圖的寬度 73 make.width.equalTo(scrollView) 74 } 75 76 //給標籤對象添加約束關係 77 label.snp.makeConstraints { make in 78 //設置標籤對象的頂邊,與父視圖保持20點的距離。 79 make.top.equalTo(contentView).inset(20) 80 //設置標籤對象的底邊,與父視圖保持20點的距離。 81 make.bottom.equalTo(contentView).inset(20) 82 //設置標籤對象的左邊,與父視圖保持20點的距離。 83 make.leading.equalTo(contentView).inset(20) 84 //設置標籤對象的右邊,與父視圖保持20點的距離。 85 make.trailing.equalTo(contentView).inset(20) 86 } 87 88 //更改布爾變量的值,標識當前已經完成三個控件的約束 89 didSetupConstraints = true 90 } 91 92 //調用父對象的刷新視圖約束的方法 93 super.updateViewConstraints() 94 } 95 96 override func didReceiveMemoryWarning() { 97 super.didReceiveMemoryWarning() 98 // Dispose of any resources that can be recreated. 99 } 100 }