以编程方式控制滚动视图——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 以编程方式在另一个视图控制器上显示视图控制器