如何使 TableView Cells 水平和垂直大小不同?

Posted

技术标签:

【中文标题】如何使 TableView Cells 水平和垂直大小不同?【英文标题】:How to make TableView Cells different sizes horizontally and vertically? 【发布时间】:2017-06-25 04:23:31 【问题描述】:

如何让我的表格视图看起来更像这样,而不仅仅是标准的水平单元格。我希望它看起来像下面的示例图像,我需要做什么?我的 tableView 代码也在下面。

import UIKit
import Firebase
import FirebaseDatabase
import SDWebImage

struct postStruct 
    let title : String!
    let author : String!
    let date : String!
    let article : String!
    let downloadURL : String!



class NewsViewController: UITableViewController 
    var posts = [postStruct]()
    override func viewDidLoad() 
    super.viewDidLoad()


    let ref = Database.database().reference().child("Posts")

    ref.observeSingleEvent(of: .value, with:  snapshot in
        print(snapshot.childrenCount)
        for rest in snapshot.children.allObjects as! [DataSnapshot] 
            guard let value = rest.value as? Dictionary<String,Any> else  continue 
            guard let  title = value["Title"] as? String else  continue 
            guard let  downloadURL = value["Download URL"] as? String else  continue 
            guard let  author = value["Author"] as? String else  continue 
            guard let  date = value["Date"] as? String else  continue 
            guard let  article = value["Article"] as? String else  continue 

            let post = postStruct(title: title, author: author, date: date, article: article, downloadURL: downloadURL)
            self.posts.append(post)
        
        self.posts = self.posts.reversed(); self.tableView.reloadData()
    )  


    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return posts.count
    

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
        let label1 = cell?.viewWithTag(1) as! UILabel
        label1.text = posts[indexPath.row].title
        let imageView = cell?.viewWithTag(2) as! UIImageView
        let post = self.posts[indexPath.row];
        imageView.sd_setImage(with: URL(string: post.downloadURL), placeholderImage: UIImage(named: "placeholder"))
        return cell!
    

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
        if segue.identifier == "detail" 
            if let indexPath = tableView.indexPathForSelectedRow 
                let destVC = segue.destination as! DetailNewsViewController
                destVC.titleText =  posts[indexPath.row].title
                destVC.dateText =  posts[indexPath.row].date
                destVC.authorText =  posts[indexPath.row].author
                destVC.bodyText =  posts[indexPath.row].article
                destVC.headerPhoto =  posts[indexPath.row].downloadURL
            
        
    

【问题讨论】:

使用CollectionViewflowLayout你会得到这种类型的Listing ,,,, 【参考方案1】:

也许您可以在情节提要中使用具有不同标识符的不同单元格。根据需要设计每个单元格,并在使用单元格 rowAtIndexPath 时返回您想要的单元格。

【讨论】:

【参考方案2】:

我认为你应该使用 UICollectionView 而不是 tableView。并创建您的自定义布局。请参阅这个很棒的教程以了解自定义布局。 https://www.raywenderlich.com/107439/uicollectionview-custom-layout-tutorial-pinterest

【讨论】:

以上是关于如何使 TableView Cells 水平和垂直大小不同?的主要内容,如果未能解决你的问题,请参考以下文章

在 tableview 中水平滚动以及正常的垂直滚动

有用aspose.words的吗,请教单元格内容怎么水平居中

如何使文字在div中水平和垂直居中的css代码

如何在反应本机SectionList中使一个部分水平而其他部分垂直

iPhone Tableview 在水平滚动而不是垂直中使用单元格

excel中怎样使表格数据显示为水平居中和垂直居中?