如何滚动到 UIScrollview 中的 UIButton 位置
Posted
技术标签:
【中文标题】如何滚动到 UIScrollview 中的 UIButton 位置【英文标题】:How to scroll to a UIButton location in the UIScrollview 【发布时间】:2014-10-23 18:34:00 【问题描述】:我在UIScrollView
中有UIButton
,
我想第一次滚动到这个UIButton
在页面中心的位置。
我知道使用scrollView.setContentOffset(CGPointMake(X, Y), animated: true)
但我不知道如何将UIButton
的位置转换为 X、Y
感谢您的帮助:)
【问题讨论】:
【参考方案1】:根据 UIButton 在滚动视图中的位置创建一个 CGPoint 变量:
var buttonLocation = CGPointMake(button.bounds.origin.x, button.bounds.origin.y)
然后将其赋值给 contentOffset:
scrollView.setContentOffset(buttonLocation, animated: true)
【讨论】:
谢谢,但它不起作用,button.bounds.origin.x 总是 0 :( 如果您希望UIButton
的位置在其superview
中,则应该是button.frame...
,而不是button.bounds...
。
你是对的,但我需要将 button.frame.origin.x 转换为 OFFSET,我不知道如何工作:(
我的错!有时我会被赶上并忘记校对。迈克是对的。关于您的偏移问题,您可以将函数设置为根据按钮的位置移动并提供填充:CGPointMake(button.frame.origin.x + 10, button.frame.origin.y + 10, animated: true )。这就是你要找的吗?
我想你不明白我的问题:(【参考方案2】:
// find the distance of the button from the center of the view
let deltaX = button.center.x - self.view.center.x
let deltaY = button.center.y - self.view.center.y
// change scrollView content offset based on the distance the button is from the center
scrollView.setContentOffset(CGPointMake(deltaX, deltaY), animated: true)
【讨论】:
滚动视图是否有足够的内容大小使按钮可以滚动到视图的中心?例如,如果滚动视图内容大小与视图大小相同,则不会发生滚动。同样,如果按钮位于滚动视图的顶部,则滚动视图无法向下滚动更多以使按钮居中,因为没有更多内容。【参考方案3】:当您控制按钮并将其拖到文件中然后将其放入文件中时,使按钮成为一个动作
scrollView.scrollRectToVisible(CGRectMake(x, y, w, h), animated: true)
示例:
@IBAction func home(sender: AnyObject)
scrollView.scrollRectToVisible(CGRectMake(x, y, w, h), animated: true)
【讨论】:
以上是关于如何滚动到 UIScrollview 中的 UIButton 位置的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView 内的 UIWebView 并滚动到 Web 视图中的选定字段