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

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

【问题讨论】:

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

标签: ios objective-c cocoa-touch uiscrollview


【解决方案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];
}

【讨论】:

  • 将按钮移动到屏幕上可见的位置,但我希望它正好在顶部
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-30
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
  • 2018-11-22
  • 1970-01-01
相关资源
最近更新 更多