• [Xcode 实际操作]三、视图控制器-(12)在Storyboard中使用集合控件


    目录:[Swift]Xcode实际操作

    本文将演示集合控件在故事板中的使用。

    在控制器根视图上点击鼠标,以选择该根视图。

    现在往根视图中添加一个集合视图。

    点击【库面板】图标,打开控件库面板

    在控件库搜索框内,输入控件名称Collection View,在控件库中,快速定位目标控件。

    然后在按钮控件上双击,导入所需的控件。

    点击【库面板】图标,打开控件库面板。

    接着将集合对象,移动到视图控制器的适当位置。

    在集合视图定界框右下角处按下手指,并向下拖动,使集合视图的尺寸和根视图相同。

    接着点击【尺寸检查器】图标,打开尺寸检查器面板,

    Cell Size

    【Width】:输入集合视图单元格宽度数值,

    【Height】:输入集合视图单元格高度数值,

    选择集合视图的单元格,点击【库面板】图标,打开控件库面板。

    需要往集合视图的单元格中,添加一个图像视图。

    在控件库搜索框内,输入控件名称Image View,在控件库中,快速定位目标控件。

    然后在按钮控件上双击,导入所需的控件。

    【X】:图像视图在单元格内的横向坐标值。

    【Y】:图像视图在单元格内的纵向坐标值。

    【Width】:图像视图宽度数值,

    【Height】:图像视图高度数值,

    打开【属性见哈起面板】

    然后在【Tag】标志值,输入图像视图的标志值,

    可以在代码中,通过标志值,获得图像视图对象。

    在故事板文档框架区,选择集合视图的单元格。

    在【Identifier】标识符输入框中,输入单元格的可重用标识符。

    在故事板文档框架区,选择集合视图。

    在集合视图控件上按下鼠标右键,然后拖动到视图控制器图标,设置集合视图的数据源。

    在弹出的列表中,选择【dataSource】数据源选项,设置集合视图的数据源,为当前的视图控制器

    在集合视图控件上按下鼠标右键,然后拖动到视图控制器图标,设置集合视图的代理。

    在弹出的列表中,选择【delegate】代理选项,设置表格的代理。

    点击【隐藏或显示检查器】按钮,隐藏检查器面板。

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

     1 import UIKit
     2 //给根视图控制器类,添加两个代理协议
     3 //一个使集合视图的数据源协议,一个使集合视图的代理协议。
     4 class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
     5 
     6     var images :Array<String>!
     7     
     8     override func viewDidLoad() {
     9         super.viewDidLoad()
    10         // Do any additional setup after loading the view, typically from a nib.
    11 
    12         //创建一个数组
    13         //该数组里面的数据,将作为集合数据的来源。
    14         images = ["Pic1", "Pic2", "Pic3", "Pic4", "Pic5", "Pic6", "Pic7", "Pic8", "Pic9"]
    15     }
    16 
    17     //添加一个集合视图代理方法,用来设置集合视图的单元格数量。
    18     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    19         //这里使用数组的长度,作为集合视图的单元格数量
    20         return images.count
    21     }
    22     
    23     //添加一个集合视图代理方法,用来初始化和返回集合视图的单元格,是最最重要的一个方法。
    24     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    25         //创建一个字符串,作为单元格的标识符,
    26 25      //也就是上文在故事板中,给单元格控件设置的那个重用标识符。
    27         let cellIdentifier = "reusedCell"
    28         //单元格的标识符,可以看作是一种重用机制,此方法可以从所有已经开辟内存的单元格里面,
    29 28      //选择一个具有同样标识符的、空闲的单元格。
    30         let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellIdentifier, for: indexPath)
    31         
    32         //通过在故事板中设置的标志值,获得单元格中的图像视图控件。
    33         let imageView = cell.viewWithTag(1) as! UIImageView
    34         //设置图像视图默认为半透明
    35         imageView.layer.opacity = 0.5
    36         //根据表格行的编号,从数组中获得对应的图像名称
    37         let imageName = images[(indexPath as NSIndexPath).row]
    38         //将加载后的图像,指定给图像视图
    39         imageView.image = UIImage(named: imageName)
    40         
    41         //最后返回设置好的单元格对象
    42         return cell
    43     }
    44     
    45     //添加一个代理方法,用来处理单元格的点击事件
    46     func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    47         //根据单元格的编号,获得被点击的单元格
    48         let cell = collectionView.cellForItem(at: indexPath)
    49         //通过在故事板中的标志值,获得单元格中的图像视图
    50         let view = cell?.viewWithTag(1)
    51         //将图像视图的透明度,设置为完全不透明。
    52         view?.layer.opacity = 1.0
    53     }
    54 
    55     override func didReceiveMemoryWarning() {
    56         super.didReceiveMemoryWarning()
    57         // Dispose of any resources that can be recreated.
    58     }
    59 }
  • 相关阅读:
    Java基础知识强化之集合框架笔记20:数据结构之 栈 和 队列
    Java基础知识强化之集合框架笔记19:List集合迭代器使用之 并发修改异常的产生原因 以及 解决方案
    模块已加载,但对dllregisterServer的调用失败
    sql回滚
    BAT 批处理脚本 教程
    shell脚本小技巧
    shell if
    REDHAT4.8安装yum
    Linux中文显示乱码解决
    Nginx配置文件详细说明
  • 原文地址:https://www.cnblogs.com/strengthen/p/10009953.html
Copyright © 2020-2023  润新知