zoukankan      html  css  js  c++  java
  • [Swift通天遁地]六、智能布局-(6)其他几种约束关系:父视图/Corner/Edge/AnchorAndFillEdge

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10270062.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    目录:[Swift]通天遁地Swift

    本文将演示其他几种约束关系。

    首先确保在项目中已经安装了所需的第三方库。

    点击【Podfile】,查看安装配置文件。

    1 platform :ios, ‘12.02 use_frameworks!
    3 
    4 target 'DemoApp' do
    5     source 'https://github.com/CocoaPods/Specs.git'
    6     pod 'Neon'
    7 end

    根据配置文件中的相关配置,安装第三方库。

    然后点击打开【DemoApp.xcworkspace】项目文件。

    在项目导航区,打开视图控制器的代码文件【ViewController.swift】

      1 import UIKit
      2 //在当前的类文件中,引入已经安装的第三方类库
      3 import Neon
      4 
      5 class ViewController: UIViewController {
      6     
      7     override func viewDidLoad() {
      8         super.viewDidLoad()
      9         // Do any additional setup after loading the view, typically from a nib.
     10         //父视图的填充约束
     11         fillingSuperview()
     12         //用于将视图对象,约束在父视图的某个角落
     13         cornerExample()
     14         //用于将视图对象,约束在父视图的四个边缘
     15         edgeExample()
     16         //用于将视图对象,约束并填充父视图的边缘
     17         fillingAnEdge()
     18     }
     19     
     20     //添加一个方法
     21     //用于父视图的填充约束
     22     func fillingSuperview()
     23     {
     24         //初始化一个显示区域
     25         let frame = CGRect(x: 0, y: 0,  100, height: 100)
     26         //创建一个指定显示区域的视图对象
     27         let neonView = UIView(frame: frame)
     28         //设置视图的背景颜色为橙色
     29         neonView.backgroundColor = UIColor.orange
     30         //将视图对象添加到根视图
     31         self.view.addSubview(neonView)
     32         
     33         //初始化一个浮点常量,作为视图的间距
     34         let padding = CGFloat(40)
     35         //将视图对象填充父视图,
     36         //并设置父子视图在填充方向上的间距
     37         neonView.fillSuperview(left: padding, right: padding, top: padding, bottom: padding)
     38     }
     39     
     40     //添加一个方法
     41     //用于将视图对象,约束在父视图的某个角落
     42     func cornerExample()
     43     {
     44         //初始化一个颜色数组,作为四个视图的背景颜色
     45         let colors = [UIColor.purple, UIColor.green, UIColor.orange, UIColor.blue]
     46         //初始化一个角落位置数组,作为四个数组在父视图中的约束位置
     47         let corners = [Corner.topLeft, Corner.topRight, Corner.bottomLeft, Corner.bottomRight]
     48         
     49         //初始化两个浮点类型的数字,
     50         //表示间距和尺寸
     51         let pad = CGFloat(20)
     52         let size = CGFloat(100)
     53         //通过一个四次的循环语句,依次创建四个视图对象
     54         for i in 0...3
     55         {
     56             //初始化一个视图对象
     57             let view = UIView()
     58             //根据循环的索引,
     59             //从颜色数组中,获得对应的元素,作为视图的背景颜色            
     60             view.backgroundColor = colors[i]
     61             //并将视图对象添加到父视图
     62             self.view.addSubview(view)
     63             
     64             //根据循环的索引,从约束数组中,获得对应的元素。
     65             //作为视图对象的角落约束,
     66             //将视图对象约束在父视图的指定位置,
     67             //并设置父子视图在四个方向上的间距。
     68             view.anchorInCorner(corners[i], xPad: pad, yPad: pad,  size, height: size)
     69         }
     70     }
     71     
     72     //添加一个方法
     73     //用于将视图对象,约束在父视图的四个边缘
     74     func edgeExample()
     75     {
     76         //初始化一个指定显示区域的视图对象,
     77         //作为其他自定义视图对象的父视图。
     78         let viewParent = UIView(frame: CGRect(x: 0, y: 80,  320, height: 320))
     79         //设置视图对象的背景颜色为黑色
     80         viewParent.backgroundColor = UIColor.black
     81         //将视图对象添加到根视图
     82         self.view.addSubview(viewParent)
     83         
     84         //初始化一个颜色数组,作为四个视图的背景颜色
     85         let colors = [UIColor.purple, UIColor.green, UIColor.orange, UIColor.blue]
     86         //初始化一个边缘位置数组,作为四个视图在父视图中的边缘位置
     87         let edges = [Edge.top, Edge.left, Edge.bottom, Edge.right]
     88 
     89         //初始化两个浮点类型的数字,
     90         //表示间距和尺寸
     91         let pad = CGFloat(20)
     92         let size = CGFloat(60)
     93         //通过一个四次的循环语句,依次创建四个视图对象
     94         for i in 0...3
     95         {
     96             //初始化一个视图对象
     97             let view = UIView()
     98             //根据循环的索引,
     99             //从颜色数组中,获得对应的元素,作为视图的背景颜色     
    100             view.backgroundColor = colors[i]
    101             //并将视图对象添加到父视图
    102             viewParent.addSubview(view)
    103             
    104             //根据循环的索引,从约束数组中,获得对应的元素。
    105             //作为视图对象的边缘约束,
    106             //将视图对象约束在父视图的指定位置,
    107             //并设置父子视图在四个方向上的间距。
    108             view.anchorToEdge(edges[i], padding: pad,  size, height: size)
    109         }
    110     }
    111     
    112     //添加一个方法
    113     //用于将视图对象,约束并填充父视图的边缘
    114     func fillingAnEdge()
    115     {
    116         //初始化一个指定显示区域的视图对象,
    117         //作为其他自定义视图对象的父视图。
    118         let colors = [UIColor.purple, UIColor.green, UIColor.orange, UIColor.blue]
    119         //初始化一个边缘位置数组,作为四个视图在父视图中的边缘位置
    120         let edges = [Edge.top, Edge.bottom, Edge.left, Edge.right]
    121         //初始化两个浮点类型的数字,
    122         //表示间距和尺寸
    123         let pad = CGFloat(10)
    124         let size = CGFloat(40)
    125         
    126         //初始化一个指定显示区域的视图对象,
    127         //作为其他自定义视图对象的父视图。
    128         let viewParent1 = UIView(frame: CGRect(x: 50, y: 50,  220, height: 220))
    129         //设置视图对象的背景颜色为浅灰色
    130         viewParent1.backgroundColor = UIColor.lightGray
    131         //将父视图对象添加到根视图
    132         self.view.addSubview(viewParent1)
    133         
    134         //通过一个两次的循环语句,依次创建两个视图对象
    135         for i in 0...1
    136         {
    137             //初始化一个视图对象
    138             let view = UIView()
    139             //根据循环的索引,
    140             //从颜色数组中,获得对应的元素,作为视图的背景颜色 
    141             view.backgroundColor = colors[i]
    142             //并将视图对象添加到父视图
    143             viewParent1.addSubview(view)
    144             
    145             //根据循环的索引,从约束数组中,获得对应的元素。
    146             //作为视图对象的边缘约束,
    147             //将视图对象约束并填充在父视图的指定位置,
    148             //并设置父子视图在四个方向上的间距。
    149             view.anchorAndFillEdge(edges[i], xPad: pad, yPad: pad, otherSize: size)
    150         }
    151         
    152         //初始化一个指定显示区域的视图对象,
    153         //作为其他两个自定义视图对象的父视图。
    154         let viewParent2 = UIView(frame: CGRect(x: 50, y: 300,  220, height: 220))
    155         //设置视图对象的背景颜色为浅灰色
    156         viewParent2.backgroundColor = UIColor.lightGray
    157         //将视图对象添加到根视图
    158         self.view.addSubview(viewParent2)
    159         
    160         //通过两次的循环语句,依次创建两个视图对象
    161         for i in 2...3
    162         {
    163             //初始化一个视图对象
    164             let view = UIView()
    165             //根据循环的索引,
    166             //从颜色数组中,获得对应的元素,作为视图的背景颜色 
    167             view.backgroundColor = colors[i]
    168             //并将视图对象添加到父视图
    169             viewParent2.addSubview(view)
    170             
    171             //根据循环的索引,从约束数组中,获得对应的元素。
    172             //作为视图对象的边缘约束,
    173             //将视图对象约束并填充在父视图的指定位置,
    174             //并设置父子视图在四个方向上的间距。
    175             view.anchorAndFillEdge(edges[i], xPad: pad, yPad: pad, otherSize: size)
    176         }
    177     }
    178     
    179     override func viewWillLayoutSubviews() {
    180         
    181     }
    182     
    183     override func didReceiveMemoryWarning() {
    184         super.didReceiveMemoryWarning()
    185         // Dispose of any resources that can be recreated.
    186     }
    187 }
  • 相关阅读:
    利用DTrace实时检测MySQl
    改进MySQL Order By Rand()的低效率
    RDS for MySQL查询缓存 (Query Cache) 的设置和使用
    RDS For MySQL 字符集相关说明
    RDS for MySQL 通过 mysqlbinlog 查看 binlog 乱码
    RDS for MySQL Mysqldump 常见问题和处理
    RDS for MySQL Online DDL 使用
    RDS MySQL 表上 Metadata lock 的产生和处理
    RDS for MySQL 如何使用 Percona Toolkit
    北京已成为投融资诈骗重灾区:存好骗子公司黑名单,谨防上当!
  • 原文地址:https://www.cnblogs.com/strengthen/p/10270062.html
Copyright © 2011-2022 走看看