我有 ScrollView,在这个 ScrollView 中我有按钮和一个表格。我想在加载表单时更改位置按钮和尺寸表。 例如,如果表格由 5 个单元格组成,则按钮位置需要在 200 上更改 y(向下)。 table 需要高度 = height_table + 200。
我的代码:
var yPosition: CGFloat = 0;
var scrollViewContentSize: CGFloat = 505;
var names = ["first","second","third","fourth","fifth"]
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)
let btnY1: CGFloat = 40 * CGFloat(names.count) + 467
btn1.frame.origin = CGPoint(x: 210, y: btnY1)
let btnY2: CGFloat = 44 * CGFloat(names.count) + 386
btn2.frame = CGRectMake(26, btnY2, 46, 30)
let btnY3: CGFloat = 44 * CGFloat(names.count) + 427
btn3.frame = CGRectMake(26, btnY3, 46, 30)
var framelb: CGRect = lb.frame
framelb.origin.y += 40 * CGFloat(names.count)
framelb.origin.x = 110
lb.frame = framelb
tableView.contentOffset.y += 40 * CGFloat(names.count)
tableView.contentSize = CGSize(width: 304, height: tableView.contentOffset.y)
}
我做错了什么?
我尝试添加 func setControlsPosition,但什么也没发生。
代码:
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()
}
我查了一下,setControlsPosition函数中的names.count = 5。这是正确的。
最佳答案
可以使用前一个控件作为引用来定义其他控件的位置
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)
}
请理解后再执行。
您可以对所有其他控件执行类似的操作。设置所有其他控件后,您可以根据最后一个控件的位置定义滚动内容大小。
使用自动布局,所有这一切都可以变得更加简单。尝试使用它。
希望这对你有帮助
关于ios - 更改 ScrollView 中的按钮位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36999201/