awakeFromNib和viewDidLoad的区别

46 篇文章 0 订阅
35 篇文章 0 订阅

1.使用nib或者故事版构建的界面会调用awakeFromNib,而且自定义的任何View都有这个方法,但是viewDidLoad只有UIViewController派生类的类对象才可以有,比如设置UITableCiew中的cel时,在awakeFromNib方法中设置。

2.什么时候调用

a .当.nib文件被加载的时候,会发送一个awakeFromNib的消息到.nib文件中的每个对象,每个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作。也就是说通过nib文件创建view对象时执行了awakeFromNib。

b .当view对象被加载到内存时,就会执行viewDidLoad,所以不管通过nib文件还是代码的方式都会执行viewDidLoad。

好的,以下是一个使用UICollectionView来实现九宫格图片显示的简单示例代码: 1. 在Storyboard中拖拽一个UICollectionView控件,并设置其约束和相关属性。 2. 创建一个UICollectionViewCell的子类,命名为ImageCell,并在Storyboard中设置其样式和布局。 3. 在ViewController中添加以下代码: ```swift import UIKit class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate { @IBOutlet weak var collectionView: UICollectionView! let images: [UIImage] = [UIImage(named: "image1")!, UIImage(named: "image2")!, UIImage(named: "image3")!, UIImage(named: "image4")!, UIImage(named: "image5")!, UIImage(named: "image6")!] override func viewDidLoad() { super.viewDidLoad() collectionView.dataSource = self collectionView.delegate = self } // MARK: - UICollectionViewDataSource func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return images.count } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ImageCell", for: indexPath) as! ImageCell cell.imageView.image = images[indexPath.row] return cell } // MARK: - UICollectionViewDelegate func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { // TODO: 处理选中事件 } } ``` 4. 最后,在ImageCell中添加以下代码: ```swift import UIKit class ImageCell: UICollectionViewCell { @IBOutlet weak var imageView: UIImageView! override func awakeFromNib() { super.awakeFromNib() imageView.layer.cornerRadius = 8.0 imageView.layer.masksToBounds = true } } ``` 这样就可以在UICollectionView中显示九宫格图片了。当然,你可以根据自己的需求对代码进行修改和优化。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值