在ScrollView顶部居中显示ImageView

3

好的,我有两个UIImageViews,它们是在一个UIScrollView的子视图中。我的目标是,当用户在屏幕上滚动并点击table(屏幕上的一个按钮)时,会出现一个弹出窗口(UIImageview)。我希望这个图片视图位于center位置。以下是我的代码:

    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"%f scrollView Last X", scrollView.contentOffset.x);
    NSLog(@"%f scrollView Last y", scrollView.contentOffset.y);

    //This is for the orders
    self.roundFrame = [[UIImageView alloc] initWithFrame:CGRectMake(190 + scrollView.contentOffset.x ,120 + scrollView.contentOffset.y, 385, 280)];
    self.roundFrame.image = [UIImage imageNamed:@"frame_round_edge.png"];
    [_roundFrame setUserInteractionEnabled:YES];

    //This is for the split Table
    self.roundFrameForSplit = [[UIImageView alloc] initWithFrame:CGRectMake(190 +  scrollView.contentOffset.x, 120 + scrollView.contentOffset.y, 370, 300)]; // 362
    self.roundFrameForSplit.image = [UIImage imageNamed:@"frame_round_edge.png"];
    [_roundFrameForSplit setUserInteractionEnabled:YES];
}

发生的情况是大多数时候它在中心,但有时它不在中心。我不知道如何修复这个问题。有人知道如何解决吗?谢谢帮助!
编辑:对于任何未来寻找此问题答案的人,这就是答案。因为在我的情况下(根据您想要实现的内容可能有所不同),我只想要UIImageView位于ipadMini屏幕的中心,所以我有点作弊并硬编码了值(1024/2和768/2)。别忘了将UIImageView添加为self.View的子视图(我犯了错误,一度迷失)。希望这可以帮助到您!
3个回答

1
imageview 放在 scrollview 的外部并隐藏它。
当你想让它显示在 scrollview 之上时,给 imageview 添加图片并取消隐藏。

我的scrollView非常大,以便用户可以滚动。我将imageview放在其上方,但每当imageview出现时,我会将背景变灰并禁用交互(当imageview存在时,我不允许用户滚动)。 - Some_random_coder
我不确定如何使用它们...你能举个例子吗? - Some_random_coder
假设您的图像始终具有相同的大小,您不必考虑旋转并且不想添加其他任何内容(例如图片周围的边框),那么您可以这样做。这一切都是可能的,但需要更多的工作量。 - Ben Coffman
我尝试了以下代码: CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width / 2; CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height / 2;但是每当我滚动时,位置就会改变... 我以为mainscreen应该是实际iPad mini的静态大小,难道不是吗? - Some_random_coder
嗯,你需要使用你的顶层视图。假设你正在使用IB。 - Ben Coffman
显示剩余3条评论

0

可能是你的线程问题。像这样在主线程上执行此操作

  [self performSelectorOnMainThread:@selector(yourMethos:) withObject:YourObject waitUntilDone:NO];

希望你能理解并轻松应用。谢谢。


0

尝试在以下位置编写相同的代码:

  • (void)scrollViewDidScroll:(UIScrollView *)scrollView

然后检查。


我应该保留 (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 还是将其删除并替换为这个函数?谢谢你的快速回复! - Some_random_coder
使用两个函数,因为第一个函数在快速拖动时被调用,而第二个函数在缓慢拖动时被调用。 - Sachin
谢谢!看起来这可能就是它了。 - Some_random_coder
质量保证测试正在进行中.. 一旦完成,我会尽快回复您。 - Some_random_coder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接