Mak*_*lle 0 iphone uiscrollview ios swift
我真的如何做一件可能很容易的事情..
我有一个带有一些按钮的 ScrollView。这就是我在滚动视图中创建所有按钮的方式。
var buttonList = [UIButton]()
func createButton() {
let imageArray = fillImageArray()
var lastButtonWidth: CGFloat = 0
for index in 0..<6 {
let frame1 = CGRect(x: ((self.view.frame.size.width / 2) - 27.5) + CGFloat(index * 70), y: 0, width: 55, height: 55 )
let button = UIButton(frame: frame1)
button.setImage(imageArray[index], forState: .Normal)
button.tag = index
button.addTarget(parentViewController, action: #selector(ViewController.buttonClicked(_:)), forControlEvents: .TouchUpInside)
self.scrollView.addSubview(button)
lastButtonWidth = frame1.origin.x
buttonList.append(button)
}
self.scrollView.contentSize = CGSizeMake(lastButtonWidth + 55, 0)
}
Run Code Online (Sandbox Code Playgroud)
我希望当我按下我的一个按钮时,让他居中并正确定位其他按钮。
如果我按 5 我想要这个结果:
按钮 5 移动到中心。
现在我建议使用的是滚动视图方法scrollView.scrollRectToVisible(CGRect, animated: Bool)。这将移动滚动视图以使内容的特定部分可见。
要创建 CGRect,您可以执行以下操作:
let scrollWidth = scrollView.frame.width
let scrollHeight = scrollView.frame.height
let desiredXCoor = button.frame.origin.x - ((scrollWidth / 2) - (button.frame.width / 2) )
let rect = CGRect(x: desiredXCoor, y: 0, width: scrollWidth, height: scrollHeight)
scrollView.scrollRectToVisible(rect, animated: true)
Run Code Online (Sandbox Code Playgroud)
我的数学可能有点偏差,但本质是您使用 scrollView 和 UIButton 的大小为滚动视图创建一个 CGRect 以移动到。这意味着当一个按钮被点击时,你可以使用这样的实现:
func myMethod() {
button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
}
func buttonClicked(sender: UIButton){
let scrollWidth = scrollView.frame.width
let scrollHeight = scrollView.frame.height
let desiredXCoor = sender.frame.origin.x - ((scrollWidth / 2) - (sender.frame.width / 2) )
let rect = CGRect(x: desiredXCoor, y: 0, width: scrollWidth, height: scrollHeight)
scrollView.scrollRectToVisible(rect, animated: true)
}
Run Code Online (Sandbox Code Playgroud)
如果根据您的项目进行适当调整,这应该允许您执行您所概述的操作。
| 归档时间: |
|
| 查看次数: |
1163 次 |
| 最近记录: |