0

私は 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
        }
    }
}

これをシミュレーターで実行すると、一番下までスクロールして次のようになるまで、すべてが正しく表示されます。

フォントアプリ

FontFamily セルの属性は、スタイル = サブタイトル、アクセサリ = 開示インジケータです。

私が間違っていることについてのアイデアはありますか?

4

1 に答える 1

0

self.tableView.estimatedRowHeightを設定する必要があります

于 2015-11-26T10:03:00.007 に答える