在滚动视图中更改按钮位置

时间:2016-05-03 08:27:51

标签: ios swift uitableview uiscrollview position

我有ScrollView,在这个滚动视图中我有按钮和一个表。我想在加载表单时更改位置按钮和大小表。 例如,如果表格由5个单元格组成,则按钮位置需要在200 y(向下)上更改。并且表需要有height = height_table + 200。

我的代码:

func setControlsPosition(){
tableView.contentOffset.y += 40 * CGFloat(names.count)
tableView.contentSize = CGSize(width: 304, height: tableView.contentOffset.y)

let lblY: CGFloat = tableView.frame.origin.y + tableView.frame.size.height+10 //10 for spacing between tableView and label
lb.frame = CGRectMake(26, lblY, 46, 30)

let btn1Y: CGFloat = lb.frame.origin.y + lb.frame.size.height + 10 // Spacing between label and button
btn1Y.frame = CGRectMake(26, btn1Y, 46, 30)
}

//This is code work well
   override func viewDidAppear(animated: Bool) {

    self.yPosition += 40 * CGFloat(names.count)
    self.scrollViewContentSize += 40 * CGFloat(names.count)
    self.scrlMain.contentSize = CGSize(width: 320,height: self.scrollViewContentSize)
//This function is performed, but nothing changes
    setControlsPosition()
}

我做错了什么?

screen1

screen2

我试图添加func setControlsPosition,但什么也没发生。

代码:

SELECT userid, MIN(logdate) AS first_logdate
FROM table
WHERE userid IN (
    SELECT userid FROM table
    WHERE logdate BETWEEN '2011-01-01' AND '2011-01-21'
)
GROUP BY userid

我在函数setControlsPosition中检查了names.count = 5。这是对的。

1 个答案:

答案 0 :(得分:0)

您可以使用上一个控件作为参考来定义其他控件的位置

override func viewDidAppear(animated: Bool) {

    setControlsPosition()

    self.scrollViewContentSize = button3.frame.origin.y + button3.frame.size.height + 10
    self.scrlMain.contentSize = CGSize(width: 320,height: self.scrollViewContentSize)
}

func setControlsPosition(){
    tableView.contentOffset.y += 40 * CGFloat(names.count)
    tableView.contentSize = CGSize(width: 304, height: tableView.contentOffset.y)

    let lblY: CGFloat = tableView.frame.origin.y + tableView.frame.size.height+10 //10 for spacing between tableView and label
    lb.frame = CGRectMake(26, lblY, 46, 30)

    let btn1Y: CGFloat = lb.frame.origin.y + lb.frame.size.height + 10 // Spacing between label and button
    btn1Y.frame = CGRectMake(26, btn1Y, 46, 30)
}

请理解并实施。

同样,您可以为所有其他控件执行此操作。设置完所有其他控件后,您可以根据最后一个控件的位置定义滚动内容。

使用Autolayout,所有这一切都可以更简单。尝试使用它。

希望这可以帮到你