我有一个UIViewController子类作为故事板中的场景,其中包含一个包含各种子视图的UIScrollView 。 其中一个子视图是一个UIButton ,它进入另一个场景UIViewController子类。 当我从视图返回(从导航控制器堆栈popupUIViewController )时,我发现滚动视图的原点已经有所改变,尽pipecontentoffset和contentoffset看起来是正确的。 还有一个有趣的地方是应用程序有一个标签栏,当我退回到该视图时,滚动视图被正确设置,偏移量为(0,0)。 这个过程基本上没有任何代码,因为它几乎全都在故事板上。 由于我对故事板的使用相当新颖,我认为我做错了什么,虽然我不知道是什么。 任何想法可能是什么? 也许大小问题或约束?
可能是一个简单的! 有谁知道如何让UIScrollView的滚动条不断显示? 它在用户滚动时显示,所以他们可以看到他们在滚动视图的位置。 但我希望它不断显示,因为它不是立即显示给用户滚动是可用的 任何意见将不胜感激。
我之前使用过UIScrollView ,现在正在使用它,从来没有问题。 我现在将它添加到一个旧的应用程序,虽然它按预期工作(我可以看看内容,用我的手指滚动,所有的边界和大小设置正确,所以没有空的内容,等等),我只是无法得到scrollToRectVisible工作。 我甚至简化了这个呼叫,只是把它移到了0,0的位置上: [scrollView scrollRectToVisible:CGRectMake(0, 0, 10, 10) animated:YES]; 或将其移动到0,200: [scrollView scrollRectToVisible:CGRectMake(0, 200, 10, 10) animated:YES]; 我甚至做了一个快速的应用程序来testing这个,我可以得到scrollRectToVisible在那里工作,如我所料。 但在我的旧应用程序,我似乎无法做任何事情。 我可以使scrollView滚动与setContentOffset: :,但这不是我想要的。 这个scrollView及其内容是由IB在笔尖中定义的,并与IBOutlet一起使用。 我在我的应用程序来处理scrollView唯一的代码是 [scrollView setContentSize:CGSizeMake(scrollView.contentSize.width, imageView.frame.size.height)]; (我只对垂直滚动不感兴趣)。 有没有人遇到这样的问题? 我已经比较了两个应用程序中的scrollView属性,它们是相同的。 附录: 我的scrollViews框架是:0.000000 0.000000 480.000000 179.000000 我的scrollViews contentSize是:0.000000 324.000000 它仍然像我想滚动矩形已经可见,不需要滚动。 不知道这是怎么回事。 这只是最糟糕的事情。 看起来像这样一个容易的事情来解决… 附录2: 这是我做如何做scrollRectToVisible : CGPoint point = myRect.origin; if (![clefScrollView pointInside:point withEvent:nil]) { point.x = […]
任何人都可以告诉我怎样才能模仿在iOS 10的新地图应用程序的底部工作表? 在android中,你可以使用“BottomSheet”来模拟这种行为,但是我找不到像iOS那样的东西。 这是一个简单的滚动视图与内容embedded? 所以search栏在底部? 我对iOS编程相当新,所以如果有人能帮我创build这个布局,将不胜感激。 这是我的意思是“底部表”:
我如何滚动表格的单元格到特定的位置? 我有一个表格显示3行(根据高度)。 我想要的是如果我点击第一行比根据表的高度第一行应滚动和获得新的位置(中心)和其他行相同。 我尝试contenOffset,但没有工作.. 编辑: 简而言之,就像数据选取器一样,当我们在选取器中select任何一行时,该行就会滚动到中心。 谢谢..
好吧,我认为是时候在互联网上为这个问题做一个官方的地方:如何使用分页和缩放来制作UIScrollView photoviewer。 欢迎我的同胞UIScrollView黑客。 我有一个启用分页的UIScrollView ,我显示UIImageViews像内置的照片应用程序。 (这听起来很熟悉吗?) 我在github上find了以下项目: http://wiki.github.com/andreyvit/ScrollingMadness 其中显示了如何在启用分页的情况下在滚动视图中实现缩放。 如果有人试过这个,我实际上已经删除了UIScrollView子类,并使用本地类,否则它不工作。 我认为这是因为3.0 SDK中有关滚动视图如何拦截触摸事件的变化。 所以这个想法是当你开始缩放时删除所有其他视图,并将当前视图移动到(0,0)在scrollview ,更新contentsize等,然后当你放大到1.0f它将其他视图加回并把事情整理回来。 无论如何,该项目在模拟器中完美地工作,但在设备上,有一些令人讨厌的视图移动,这是因为我们正在改变视图大小的contentsize / offset等。 您必须执行此视图移动,否则您可以向左平移其他视图留下的空白。 我在3.0 SDK发行说明的“已知问题”中发现了一个有趣的注释 : UIScrollView:缩放后,内容插入被忽略,内容被留在错误的位置。 这种声音就像这里发生的一样。 放大之后,视图会偏离屏幕,因为您已经更改了偏移等。 我已经花了数小时的时间,而且我正在减速到一个悲伤的认识,这是不行的。 Three20的照片浏览器是不可能的:它的重量太重,而且有太多不必要的UI和其他行为。 内置的照片应用程序似乎做了一些魔术。 如果放大图像并平移到较远的边缘,当前的照片将独立于旁边的照片移动,这与使用标准UIScrollView尝试不同。 我已经看到了关于嵌套UIScrollView的讨论,但我真的不想去那里。 有没有人用标准的UIScrollViewpipe理这个(在2.2和3.0 SDK中工作)? 我不喜欢滚动我自己的缩放+反弹+平底锅+分页代码。
有没有办法知道一个UIScrollView是否已经达到顶部或底部内部 – (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate ? 谢谢。
我已经closuresAutolayout和viewcontrollerembedded导航控制器。 我正在使用Xcode 5,Storyboard。 我不明白为什么会从上面留下空间。 其实在故事板我已经把我的标签正好在导航栏下方。 但是,当我在模拟器上运行它,然后从顶部留下空间。 解决这个问题的方法之一 -(void)viewWillLayoutSubviews { self.scrollViewMain.frame = CGRectMake(0, -70, 320, 800); self.scrollViewMain.contentSize = CGSizeMake(320, 800); } 但是我错过了一些非常简单的方法。
我目前正在尝试使用UICollectionView实现UITableView重sorting行为。 我们来调用一个UItableView TV和一个UICollectionView CV (澄清下面的解释) 我基本上试图重现电视的拖放,但我没有使用编辑模式,只要长按手势被触发,电池就准备好被移动。 它工作正常,我使用CV的移动方法,一切都很好。 我更新CV的contentOffset属性以处理用户拖动单元格时的滚动。 当用户到达顶部和底部的特定矩形时,我更新contentOffset和CV滚动。 问题是当用户停止移动它的手指时,手势不发送任何更新,这使得滚动停止并且一旦用户移动他的手指就重新开始。 这种行为是绝对不自然的,我宁愿继续滚动,直到用户释放简历,因为它是在电视的情况下。 电视拖拽的经验是真棒,我真的想重现相同的感觉。 有谁知道他们如何pipe理在重新sorting电视的滚动? 我试着用一个定时器重复触发滚动动作,只要手势位置在正确的位置,滚动是可怕的,并不是非常有效率(非常缓慢和跳动)。 我也尝试使用GCD在另一个线程中聆听手势位置,但结果甚至更糟。 我没有想到这个,所以如果有人有答案,我会嫁给他! 这里是longPress方法的实现: – (void)handleLongPress:(UILongPressGestureRecognizer *)sender { ReorganizableCVCLayout *layout = (ReorganizableCVCLayout *)self.collectionView.collectionViewLayout; CGPoint gesturePosition = [sender locationInView:self.collectionView]; NSIndexPath *selectedIndexPath = [self.collectionView indexPathForItemAtPoint:gesturePosition]; if (sender.state == UIGestureRecognizerStateBegan) { layout.selectedItem = selectedIndexPath; layout.gesturePoint = gesturePosition; // Setting gesturePoint invalidate layout } else if […]
我正在尝试处理UICollectionViewController中的界面方向更改。 我试图实现的是,我想有一个接口旋转后相同的 contentOffset。 意思是说,它应该根据边界比率的变化而改变。 从纵向开始,内容偏移量为{ bounds.size.width * 2,0} … …应该导致在横向上的内容偏移{ bounds.size.width * 2,0}(反之亦然)。 计算新的偏移量不是问题,但不知道在哪里(或何时)设置它,以获得平滑的animation。 我正在做这样的票价是无效的willRotateToInterfaceOrientation:duration:并重置didRotateFromInterfaceOrientation:的内容偏移didRotateFromInterfaceOrientation: : – (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration; { self.scrollPositionBeforeRotation = CGPointMake(self.collectionView.contentOffset.x / self.collectionView.contentSize.width, self.collectionView.contentOffset.y / self.collectionView.contentSize.height); [self.collectionView.collectionViewLayout invalidateLayout]; } – (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation; { CGPoint newContentOffset = CGPointMake(self.scrollPositionBeforeRotation.x * self.collectionView.contentSize.width, self.scrollPositionBeforeRotation.y * self.collectionView.contentSize.height); [self.collectionView newContentOffset animated:YES]; } 这将改变旋转后的内容偏移量。 如何在旋转过程中设置它? 我尝试在willAnimateRotationToInterfaceOrientation:duration:设置新的内容偏移量willAnimateRotationToInterfaceOrientation:duration:但是这会导致一个非常奇怪的行为。 一个例子可以在我的GitHub项目中find 。