ios - 更改 ScrollView 中的按钮位置

标签 ios swift uitableview uiscrollview position

我有 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/

相关文章:

Swift 2.0 locationManager 刷新 View ,但一旦 View 加载就不会保持静止

ios - Swift - 告诉 TableViewController 填充什么数据

ios - UIViewController 最佳实践——加载

ios - UITextView 内容在 UINavigationBar 下

ios - 我正在尝试动态添加工具栏但不确定如何访问 View Controller 以添加工具栏 View

ios - 导航栏中的渐变与其下方的 View 不同。

ios - 上传 UIImage 进行解析

ios - Swift - 为 TableView 设置最大行数并删除最旧的行以便为新行让路

ios - 强制 UIPickerView 重新加载数据

ios - 自动滚动时单元格文本复制到另一行(通过拖放)