动态视图的高度取决于表格视图的高度?

时间:2014-11-13 03:04:57

标签: ios uitableview autolayout autoresizingmask

现在我正在使用CWPopup类别(https://github.com/cezarywojcik/CWPopup)并且我遇到布局问题:我在弹出视图中创建了一个tableView,从我的mainView调用此弹出视图,预计结果是 popupView.height = navigationBar.height + tableView.height (tableView.height是动态的),但它没有按预期工作。现在它看起来像是:

Table view with max item

Table view with min item我已经尝试过自动布局和自动调整大小的面具,但它没有帮助。任何机构都可以向我展示更好的解决方案吗?

3 个答案:

答案 0 :(得分:0)

如果您将模态视图控制器作为表单提交,那么需要在viewWillLayoutSubviews方法中执行以下操作:

- (void)viewWillLayoutSubviews
{

    ...

    if(SYSTEM_VERSION_LESS_THAN(@"8.0"))
    {
        self.view.superview.bounds = CGRectMake(0, 0, 540.0, requiredHeight);
    }
    else
    {
        self.view.bounds = CGRectMake(0, 0, 540.0, requiredHeight);
    }
}

不记得我从哪里得到这段代码:

#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

但我会把它放在一个头文件中并导入到你的项目中。

答案 1 :(得分:0)

使用viewDidLayoutSubviews&设置UITableview框架

override func viewDidLayoutSubviews() {
            super.viewDidLayoutSubviews()
            tableViewWhatsHot.frame = CGRect(x: tableViewWhatsHot.frame.origin.x, y: tableViewWhatsHot.frame.origin.y, width: tableViewWhatsHot.frame.size.width, height: tableViewWhatsHot.contentSize.height)
      }

答案 2 :(得分:-1)

桌面视图的高度不会动态变化。您可以使用单元格的行数和高度来计算帧高度并明确设置它。