【问题标题】:UITableView height inside UIScrollView in SwiftSwift 中 UIScrollView 内的 UITableView 高度
【发布时间】:2017-01-30 23:12:07
【问题描述】:

我正在尝试在UIScrollView 中添加一个UITableView,但是当我使用 tableView.contentSize.height 设置UITableView 的高度时,它没有设置正确的高度(它会在实际高度的基础上增加额外的高度)

有人可以帮忙吗?

【问题讨论】:

  • 我到底想要实现的是我有两个列表需要显示在另一个通过 uilabel 分隔的下方
  • 为什么不做2个部分呢?
  • @derdida 我在水平滚动的 tableview 上方有一个视图
  • @good4pc 你能告诉我怎么做我是iOS新手
  • @derdida 我已经编辑了问题

标签: ios swift uitableview uiscrollview height


【解决方案1】:

我可以将表格的内容大小设置为表格高度,并通过以下方式修改scrollView的内容大小。

我刚刚设计了scrollView里面的表格,调用viewDidAppear修改表格的高度和scrollView的内容大小

我的代码:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    self.extraDesignAfterStoryboard();
}

override func viewDidAppear(animated: Bool) {

    self.modifyContentHeight();
}

func extraDesignAfterStoryboard()
{
    scrolVw = UIScrollView();
    scrolVw.frame = CGRectMake(0, 64, self.view.frame.size.width, 200);
    scrolVw.backgroundColor = UIColor.greenColor();
    self.view.addSubview(scrolVw);

    tblViewScr = UITableView(frame: CGRectMake(0, 80, scrolVw.frame.size.width, 120), style: UITableViewStyle.Plain);
    tblViewScr.delegate = self;
    tblViewScr.tag = 100;
    tblViewScr.dataSource = self;
    tblViewScr.scrollEnabled = false;
    tblViewScr.backgroundColor = UIColor.redColor();
    scrolVw.addSubview(tblViewScr);
}

func modifyContentHeight()
{
    if(self.tblViewScr.contentSize.height > self.tblViewScr.frame.height){
        var frame: CGRect = self.tblViewScr.frame;
        frame.size.height = self.tblViewScr.contentSize.height;
        self.tblViewScr.frame = frame;

        var contentSize = self.scrolVw.contentSize;
        contentSize.height = CGRectGetMaxY(self.tblViewScr.frame);
        self.scrolVw.contentSize = contentSize;
    }
}

它在我的演示项目中工作。 你能检查一次,如果它适合你。

【讨论】:

  • 你从哪里得到数据源的?请参阅我在 viewDidLoad 中设计并调用以修改 viewDidAppear 中的框架。实际上,您需要在表加载数据后调用该方法。你明白我的意思了吗??你也在做同样的事情吗?
  • 您是否像这样在代码中设置滚动视图的内容大小。 var contentSize = self.scrollVw.contentSize; contentSize.height = CGRectGetMaxY(self.tblViewScr.frame); self.scrollVw.contentSize = contentSize;
猜你喜欢
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多