gpt4 book ai didi

ios - 更改 ScrollView 中的按钮位置

转载 作者:行者123 更新时间:2023-11-30 13:27:23 25 4
gpt4 key购买 nike

我有 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)
}

我做错了什么?

screen1

screen2

我尝试添加 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com