如何使用Autolayout调整子视图的大小

时间:2015-07-17 12:00:36

标签: objective-c autolayout tableview

我有一个Tableview视图,有些resson,我必须在Scrollview中添加这个tableview。 我使用了自动布局,但是当我将屏幕旋转到横向时,此桌面视图不会自动调整大小。

当我将sreen旋转到横向时,如何使此tableview包含相同大小的scrollview?

这是我的代码:

scrollViewMain = UIScrollView()
scrollViewMain.contentInset = UIEdgeInsets(top: 34, left: 0, bottom: 52, right: 0)
scrollViewMain.scrollIndicatorInsets = UIEdgeInsets(top: 34, left: 0, bottom: 52, right: 0)
scrollViewMain.delegate = self
scrollViewMain.scrollEnabled = true
scrollViewMain.showsHorizontalScrollIndicator = false
scrollViewMain.showsVerticalScrollIndicator = true
scrollViewMain.indicatorStyle = UIScrollViewIndicatorStyle.White
scrollViewMain.setTranslatesAutoresizingMaskIntoConstraints(false)
view.addSubview(scrollViewMain)

view.backgroundColor = BACKGROUND_COLOR


headerView = UIView(frame: CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_WIDTH / 3))
headerView.backgroundColor = UIColor.clearColor()
headerView.setTranslatesAutoresizingMaskIntoConstraints(false)
headerView.layer.masksToBounds = true

tableViewMain = UITableView()
tableViewMain.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
tableViewMain.scrollIndicatorInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
tableViewMain.delegate = self
tableViewMain.dataSource = self
tableViewMain.backgroundColor = UIColor.clearColor()
tableViewMain.backgroundView = nil
tableViewMain.opaque = false
tableViewMain.separatorColor = UIColor(rgb: 0x3e3e3e)
tableViewMain.indicatorStyle = UIScrollViewIndicatorStyle.White
tableViewMain.scrollEnabled = false
tableViewMain.setTranslatesAutoresizingMaskIntoConstraints(false)
scrollViewMain.addSubview(tableViewMain)
tableViewMain.registerClass(MoviesTableViewCell.self, forCellReuseIdentifier: "MoviesTableViewCell")
tableViewMain.tableHeaderView = headerView

let viewDictionary = ["scrollViewMain": scrollViewMain, "tableViewMain": tableViewMain, "headerView": headerView]

let scrollViewMainConstraint_Horizontal:NSArray = NSLayoutConstraint.constraintsWithVisualFormat(
    "H:|-0-[scrollViewMain]-0-|",
    options: nil,
    metrics: nil,
    views: viewDictionary
)
let scrollViewMainConstraint_Vertical:NSArray = NSLayoutConstraint.constraintsWithVisualFormat(
    "V:|-0-[scrollViewMain]-0-|",
    options: nil,
    metrics: nil,
    views: viewDictionary
)

view.addConstraints(scrollViewMainConstraint_Horizontal as! [AnyObject])
view.addConstraints(scrollViewMainConstraint_Vertical as! [AnyObject])

1 个答案:

答案 0 :(得分:1)

我认为问题是表格视图没有任何约束,所以它不知道屏幕旋转时要遵循的规则。我不确切地知道你想要什么样的约束,但是假设你希望表视图填满整个滚动视图,你可以添加非常类似于你用于滚动视图的约束(引脚前导,尾随, topview的顶部和底部空间)。