第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

調(diào)整UITableView的大小以適合內(nèi)容

調(diào)整UITableView的大小以適合內(nèi)容

iOS
冉冉說 2019-10-16 10:34:49
我正在創(chuàng)建一個應(yīng)用程序,它將在中有一個問題,UILabel并在中顯示選擇題答案UITableView,每行顯示一個選擇題。問題和答案會有所不同,因此我需要UITableView保持高度變化。我想sizeToFit在桌子旁找個工作。將表格的框架設(shè)置為所有內(nèi)容的高度。誰能建議我如何實現(xiàn)這一目標?
查看完整描述

3 回答

?
翻翻過去那場雪

TA貢獻2065條經(jīng)驗 獲得超14個贊

實際上,我自己找到了答案。


我只是創(chuàng)建一個新CGRect的tableView.frame用height的table.contentSize.height


這臺的高度UITableView到height它的內(nèi)容。由于代碼修改了UI,因此請不要忘記在主線程中運行它:


dispatch_async(dispatch_get_main_queue(), ^{

        //This code will run in the main thread:

        CGRect frame = self.tableView.frame;

        frame.size.height = self.tableView.contentSize.height;

        self.tableView.frame = frame;

    });


查看完整回答
反對 回復 2019-10-16
?
夢里花落0921

TA貢獻1772條經(jīng)驗 獲得超6個贊

無需KVO,DispatchQueue或自行設(shè)置約束的Swift 5和4.2解決方案。


該解決方案基于Gulz的答案。


1)創(chuàng)建以下子類UITableView:


import UIKit


final class ContentSizedTableView: UITableView {

    override var contentSize:CGSize {

        didSet {

            invalidateIntrinsicContentSize()

        }

    }


    override var intrinsicContentSize: CGSize {

        layoutIfNeeded()

        return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height)

    }

}

2)UITableView在布局中添加一個,并在所有側(cè)面設(shè)置約束。將其類別設(shè)置為ContentSizedTableView。


3)您應(yīng)該看到一些錯誤,因為Storyboard并未考慮我們的子類intrinsicContentSize。通過打開大小檢查器并將internalContentSize重寫為占位符值來解決此問題。這是設(shè)計時間的替代。在運行時,它將在ContentSizedTableView類中使用重寫


更新:更改了Swift 4.2的代碼。如果您使用的是早期版本,請使用UIViewNoIntrinsicMetric代替UIView.noIntrinsicMetric


查看完整回答
反對 回復 2019-10-16
?
守候你守候我

TA貢獻1802條經(jīng)驗 獲得超10個贊

快速解決方案


跟著這些步驟:


1-在情節(jié)提要中設(shè)置表格的高度限制。


2-從情節(jié)提要中拖動高度約束,并在視圖控制器文件中為其創(chuàng)建@IBOutlet。


    @IBOutlet weak var tableHeight: NSLayoutConstraint!

3-然后您可以使用以下代碼動態(tài)更改桌子的高度:


override func viewWillLayoutSubviews() {

    super.updateViewConstraints()

    self.tableHeight?.constant = self.table.contentSize.height

}

更新資料


如果為您剪切了最后一行,請嘗試在willDisplay單元格函數(shù)中調(diào)用viewWillLayoutSubviews():


func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {

    self.viewWillLayoutSubviews()

}


查看完整回答
反對 回復 2019-10-16
  • 3 回答
  • 0 關(guān)注
  • 866 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號