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 }
  • 相关阅读:
    【通知】OK6410开发板新加5张国嵌linux视频教程光盘
    请wince驱动调试助手的作者sunrain_hjb以及wince开发者进来看看
    【学习】关于wince5.0 的.net 框架学习——.NET Compact Framework OS Design Development
    【ARM11开发板】飞凌OK6410 开发板原厂光盘资料发布更改通知
    关于wince6.0和wince5.0 驱动的位置问题
    nand flash结构以及读写分析——写的比较经典(转载)
    【转载经典】反省研发工程师的发展之路.你属于哪一种?
    【讨论】初学者拿到2440、6410 等开发板应该怎么学习?
    为啥一个晶振都要一两块钱一个?还是国产的呢?!
    【原创】关于mobile 和wince系统定制开发的最大区别
  • 原文地址:https://www.cnblogs.com/strengthen/p/10270062.html
Copyright © 2011-2022 走看看