将rowHeight设置为等于UITableViewAutomaticDimension不起作用

时间:2015-06-21 21:56:01

标签: ios swift uitableview xcode6 xcode6.3.2

我正在使用XCode 6.3在iOS 8中构建不同字体的TableView。首先,根据我阅读的书,它说没有必要对表行的高度做任何事情鉴于iOS8会为您处理,所以一旦我按照书中的所有内容,行应根据其内容更新其高度,但事实并非如此。然后我尝试使用tableView.rowHeight,并将它设置为TableViewController的viewDidLoad函数中的UITableViewAutomaticDimension,并且它也没有用。我也尝试从Interface Builder更改行的高度,这似乎也没有对高度产生任何影响。我的代码如下:

class RootViewController: UITableViewController {

    private var familyNames: [String]!
    private var cellPointSize: CGFloat!
    private var favoritesList: FavoritesList!
    private let familyCell = "FamilyName"
    private let favoritesCell = "Favorites"

    override func viewDidLoad() {
        super.viewDidLoad()

        self.tableView.rowHeight = UITableViewAutomaticDimension
        familyNames = sorted(UIFont.familyNames() as! [String])
        let preferredTableViewFont = UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline)
        cellPointSize = preferredTableViewFont.pointSize
        favoritesList = FavoritesList.sharedFavoritesList
    }

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        tableView.reloadData()
    }

    func fontForDisplay(atIndexPath indexPath: NSIndexPath) -> UIFont? {
        if indexPath.section == 0 {
            let familyName = familyNames[indexPath.row]
            let fontName = UIFont.fontNamesForFamilyName(familyName).first as! String
            return UIFont(name: fontName, size: cellPointSize)
        } else {
            return nil
        }
    }

    // MARK: - Table view data source

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        // Return the number of sections.
        return favoritesList.favorites.isEmpty ? 1 : 2
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // Return the number of rows in the section.
        return section == 0 ? familyNames.count : 1
    }

    override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        return section == 0 ? "All Font Families" : "Favorite Fonts"
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        if indexPath.section == 0 {
            let cell = tableView.dequeueReusableCellWithIdentifier(familyCell, forIndexPath: indexPath) as! UITableViewCell
            cell.textLabel!.font = fontForDisplay(atIndexPath: indexPath)
            cell.textLabel!.text = familyNames[indexPath.row]
            cell.detailTextLabel!.text = familyNames[indexPath.row]
            return cell
        } else {
            return tableView.dequeueReusableCellWithIdentifier(favoritesCell, forIndexPath: indexPath) as! UITableViewCell
        }
    }
}

当我在模拟器中运行时,一切都看起来正确,直到我一直滚到底部,我得到了这个:

fonts app

FontFamily单元格的属性为:style = subtitle,accessory = disclosure指示符。

关于我做错了什么的任何想法?

1 个答案:

答案 0 :(得分:0)

您必须设置 self.tableView.estimatedRowHeight