gpt4 book ai didi

ios - swift CollectionView 单元格文本标签自动调整大小

转载 作者:行者123 更新时间:2023-11-30 12:13:49 25 4
gpt4 key购买 nike

我看过很多 UICollectionView 和 UITableView 的 YT 教程,即使我正在寻找帮助的这个应用程序也是通过观看和阅读几个教程制作的,但有一个问题我找不到。

此应用程序由用户决定其用户名并使用该用户名编写一些文本。我用 Firebase 做了这个,连接所有东西,甚至帖子返回到应用程序,但问题是总是只显示两行文本。

这就是它的样子,所以你可以想象得更好:

enter image description here

我希望用户名上方的文本标签向下扩展,并在其中写入全文。该文本标签上的行数设置为 0。我在 Storyboard 中尝试了几种方法,使用了很多不同的代码和方法,但结果始终相同。我应该在 TableView 中执行此操作吗?我认为 collectionView 是更好的方法并且更容易设计。

以下是该页面 VC 的代码:

import UIKit
import Firebase

class FeedViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {

@IBOutlet weak var collectionView: UICollectionView!

override func viewDidLoad() {
super.viewDidLoad()
loadData()
}

var fetchPosts = [Post]()

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

func loadData() {
self.fetchPosts.removeAll()
let ref = Database.database().reference()
ref.child("Frusters").observeSingleEvent(of: .value, with: { (snapshot) in
if let postDict = snapshot.value as? [String:AnyObject] {
for (_,postElement) in postDict {
print(postElement);
let post = Post()
post.username = postElement["Username"] as? String
post.message = postElement["Message"] as? String
self.fetchPosts.append(post)
}
}
self.collectionView.reloadData()

}) { (error) in
print(error.localizedDescription)
}
ref.removeAllObservers()
}

/*func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

let deviceSize = UIScreen.main.bounds.size
//let cellSize = sqrt(Double(deviceSize.width * deviceSize.height) / (Double(33)))

let cellWidth = ((deviceSize.width / 2) - 10)
let cellHeight = (deviceSize.height / 4)

return CGSize(width: cellWidth , height: cellHeight)
}*/

func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.fetchPosts.count
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "messageCell", for: indexPath) as! PostCell

cell.messageLabel.text = self.fetchPosts[indexPath.row].message
cell.usernameLabel.text = self.fetchPosts[indexPath.row].username

return cell
}

/*func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeFotItemAt indexPath: IndexPath) -> CGSize {
return CGSize (width: view.frame.width, height: 500)
}*/
}

你可以看到我测试的一些代码现在处于“注释”方式,因为它们没有做任何不同的事情。

你能告诉我我做错了什么吗?是 Storyboard中的某些内容,还是我插入了错误的代码,也许根本没有插入任何需要的代码?

最佳答案

您可以更新标签的 preferredWidth 或者仅添加大于或等于值的高度约束。

附注确保将 numberOfLines 属性设置为 0,以便标签没有最大行数,这也会截断字符串。

关于ios - swift CollectionView 单元格文本标签自动调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45677128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com