以编程方式控制滚动视图——Objective-c

Posted

技术标签:

【中文标题】以编程方式控制滚动视图——Objective-c【英文标题】:Control scrollview programmatically — Objective-c 【发布时间】:2013-05-21 18:05:25 【问题描述】:

我有一个带有一些按钮的滚动视图。单击一个按钮时,我希望它位于屏幕顶部,以便 button.frame.origin.y 是 self.view.frame.origin.y。我该怎么做?

【问题讨论】:

请记住,根据定义,视图的frame 和父视图的frame 位于不同的坐标系中。如果要将视图的位置与其父视图的位置进行比较,则应使用相同的坐标系。要么使用视图的frame 和父视图的bounds,要么使用-convertRect:toWindow: 之类的方法将两个框架转换为某个公共坐标系。 【参考方案1】:

你可以这样做

- (void)buttonPressed:(UIButton*)sender

    [scrollView setContentOffset:sender.frame.origin animated:YES];

【讨论】:

这也可以滚动水平轴。目前尚不清楚是否需要这样做。解决方法是使用发送者的 origin.y 和滚动视图的当前 contentOffset.x 构造一个 CGPoint。【参考方案2】:

使用- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated 方法。

按下按钮时将视图滚动到所需的帧。

例如:

- (void)buttonPressed:(UIButton*)sender

    [scrollView scrollRectToVisible:desireFrameFromButton];

【讨论】:

将按钮移动到屏幕上可见的位置,但我希望它正好在顶部

以上是关于以编程方式控制滚动视图——Objective-c的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C 以编程方式在另一个视图控制器上显示视图控制器

以编程方式滚动到顶部不起作用?

如何在 Objective-C 控制器中以编程方式加载用 swift 编写的自定义 XIB 视图

以编程方式滚动到顶部不起作用?

以编程方式在iOS上滚动UIWebView

以编程方式将 FAB 卷回