我有一个CollectionViewController
如下
class CollectionViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource{
var dogs = ["Dog1", "Dog2","Dog3"]
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
collectionView.delegate = self
collectionView.dataSource = self
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CustomCell", for: indexPath) as! CustomCell
cell.testLabel.text = dogs[indexPath.row]
return cell
}
和CustomCell
如下
class CustomCell: UICollectionViewCell {
@IBOutlet weak var testLabel: UILabel!
}
我喜欢将字体大小更改为上面的18,但是我得到了我在手册中设置的字体。那么我是否可以在controller
中以编程方式更改字体,或者我需要在CustomCell
中更改字体
P.S。刚发现这种情况发生了,当我在可用的设备尺寸上手动设置字体时,如果我删除那些手动设备尺寸,它就可以工作。无论如何我可以覆盖它并同时拥有两个?
答案 0 :(得分:1)
直接将“cellForItemAt”方法更改为
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CustomCell", for: indexPath) as! CustomCell
cell.testLabel.text = ["Dog1", "Dog2", "Dog3"]
cell.testLabel.font = UIFont(name: "HelveticaNeue", size: 18)
return cell
}
答案 1 :(得分:1)
使用此代码可以帮助您
label.font = label.font.fontWithSize(20) //20 is font size
斯威夫特3:
label.font = label.font.withSize(20)
或尝试
UIFont.systemFont(ofSize: 18)
答案 2 :(得分:1)
使用 awakeFromNib 方法,来自apple documentation,
nib加载基础结构向每个基础结构发送awakeFromNib消息 从nib存档重新创建的对象,但仅在所有对象之后 存档已加载并初始化。当一个对象收到 一个awakeFromNib消息,它保证有所有的插座和 行动关系已经建立。
您可以在此方法中更改标签字体。
class CustomCell: UICollectionViewCell {
@IBOutlet weak var testLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
testLabel.font = UIFont(name: "HelveticaNeue", size: 18)
}
}
答案 3 :(得分:1)
您需要将 cellForItemAt 更改为:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CustomCell", for: indexPath) as! CustomCell
cell.testLabel.text = "Dog 1"
cell.testLabel.font = UIFont(name: "HelveticaNeue", size: 18)
return cell
}
然后请检查以下内容:
答案 4 :(得分:1)
这是我的问题。
它的解决方案非常简单
我们要做的就是首先使用正确的字体字符串名称指定字体,然后添加字符串
即cell.testLabel.font = UIFont(name: "HelveticaNeue", size: 18)
cell.testLabel.text = dogs[indexPath.row]
答案 5 :(得分:0)
首先,我不明白你为什么要在func viewDidLayoutSubviews()
cellForItemAt
方法中写delegate
。只需从那里删除它。
其次,您不需要在collectionView.reloadData()
中致电viewDidLoad()
,因为它会自动第一次加载collectionView
您提供的数据。
在继续更改字体之前,请检查系统中是否提供了所需的字体(HelveticaNeue)。如果没有先安装字体并将其添加到项目中。
现在要更改font
的{{1}}。它可以通过两种方式完成:
1。在label
中使用awakeFromNib()
,即
CustomCell
当从笔尖加载单元格时,这将仅设置单元格的字体一次。如果在配置一次后class CustomCell: UICollectionViewCell
{
@IBOutlet weak var testLabel: UILabel!
override func awakeFromNib()
{
super.awakeFromNib()
self.testLabel.font = UIFont(name: "HelveticaNeue", size: 18)
}
}
中没有进一步的更改,则建议。
2。在label's font
中配置字体,即
cellForItemAt
这将在每次调用func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CustomCell", for: indexPath) as! CustomCell
cell.testLabel.text = dogs[indexPath.row]
cell.testLabel.font = UIFont(name: "HelveticaNeue", size: 18)
return cell
}
方法时设置单元格的字体,即每次重新加载单元格时。如果要在重新加载时在单元格中进行任何条件更改,请使用此选项。