标签: uiscrollview

如何在UIScrollView中以编程方式强制停止滚动?

注意:这里给出答案对我不起作用.

我有一个UIScrollView(不是表视图,只是一个自定义的东西),当用户采取某些动作时,我想杀死视图内的任何滚动(拖动或减速).我试过这样做:

[scrollView scrollRectToVisible:CGRectInset([scrollView bounds], 10, 10) animated:NO];
Run Code Online (Sandbox Code Playgroud)

根据这个理论,给定一个已经知道可见的矩形,滚动就会停在它的位置,但事实证明这没有任何效果 - 显然滚动视图看到给定的矩形在边界和需要没有动作.我可以让滚动停止,如果我给出一个肯定在当前可见边界之外的矩形,但是在视图的contentSize内.这似乎停止了预期的视图......但也导致它跳转到其他位置.我可能会在边缘做一些游戏以使其合理地工作,但有没有人知道一种干净的方法来停止滚动视图正在做它的事情?

谢谢.

iphone uiscrollview

74
推荐指数
7
解决办法
8万
查看次数

我可以在UIScrollView中使用UIRefreshControl吗?

UIScrollView我的应用程序中已有大约5个已加载多个.xib文件.我们现在想用一个UIRefreshControl.它们构建为与UITableViewControllers一起使用(根据UIRefreshControl类引用).我不想重新做所有5个UIScrollView工作.我已经尝试过使用UIRefreshControlUIScrollView的,除了一些东西之外,它按预期工作.

  1. 在刷新图像变成加载器之后,UIScrollView跳跃大约10个像素,这只有在我非常小心地UIScrollview向下拖动时才会发生.

  2. 当我向下滚动并启动重装,然后让围棋UIScrollView,在UIScrollView那里我让它去住宿.重新加载完成后,UIScrollView跳转到顶部没有动画.

这是我的代码:

-(void)viewDidLoad
{
      UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
      [refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
      [myScrollView addSubview:refreshControl];
}

-(void)handleRefresh:(UIRefreshControl *)refresh {
      // Reload my data
      [refresh endRefreshing];
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以节省一大堆时间并使用UIRefreshControla UIScrollView

谢谢!!!

iphone uiscrollview xamarin.ios ios uirefreshcontrol

73
推荐指数
5
解决办法
3万
查看次数

如何获取UITableView滚动位置以便保存?

有没有办法找出哪个UITableViewCell位于滚动窗口的顶部?

我想获取当前滚动位置,以便我可以在应用程序退出时保存它.当应用程序启动时,我想滚动到它上次退出时的位置.

iphone objective-c uitableview uiscrollview

71
推荐指数
2
解决办法
7万
查看次数

UIScrollview获取触摸事件

如何检测我的触摸点UIScrollView?触摸委托方法不起作用.

cocoa-touch objective-c uiscrollview uitouch ios

70
推荐指数
2
解决办法
5万
查看次数

在旋转接口方向时将contentOffset保留在UICollectionView中

我正在尝试在UICollectionViewController中处理接口方向更改.我想要实现的是,我想在接口旋转后拥有相同的 contentOffset.意思是,它应该根据边界变化的比例进行更改.

从肖像开始,内容偏移量为{ bounds.size.width*2,0} ...

在portait中的UICollectionView

...应该导致景观中的内容偏移{ bounds.size.width*2,0}(反之亦然).

UICollectionView在风景中

计算新的偏移量不是问题,但不知道,在何处(或何时)设置它以获得平滑的动画.我正在做的事情是使布局无效willRotateToInterfaceOrientation:duration:并重置内容偏移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];
}
Run Code Online (Sandbox Code Playgroud)

这会在旋转后更改内容偏移.

如何在旋转期间设置它?我试图设置新的内容偏移量,willAnimateRotationToInterfaceOrientation:duration:但这会导致一种非常奇怪的行为.

一个例子可以在我的GitHub项目中找到.

cocoa-touch objective-c uiscrollview ios uicollectionview

70
推荐指数
8
解决办法
3万
查看次数

获取UIScrollView内容的可见rect

我怎样才能找到屏幕上实际可见的显示视图内容的rect(CGRect).

myScrollView.bounds
Run Code Online (Sandbox Code Playgroud)

上面的代码在没有缩放时有效,但只要你允许缩放,它就会以1以外的缩放比例中断.

为了澄清,我想要一个CGRect,它包含相对于内容的滚动视图内容的可见区域.(即如果它是缩放比例2,则矩形的大小将是滚动视图大小的一半,如果它是缩放比例0.5,它将是双倍.)

iphone objective-c uiscrollview

69
推荐指数
5
解决办法
7万
查看次数

iOS 7 - navigationController正在设置我的UIScrollView的contentInset和ContentOffset

我有一个UIScrollView(实际上是一个UICollectionView,但这可能没关系).当它出现在IOS 7中时,导航控制器将其contentInset和contentOffset设置为我不想要的值.它似乎正在尝试调整状态栏和导航栏.我非常喜欢让他们独自一人.我已经通过覆盖contentInset和contentOffset的getter和setter方法来解决这个问题,并使用一个标志来告诉对象它是否应该接受一个集合.但有更好的方法吗?

uiscrollview uinavigationcontroller ios ios7

69
推荐指数
3
解决办法
5万
查看次数

为什么UIScrollView在ios 6和ios 7中从顶部留出空间

在此输入图像描述

在此输入图像描述

我已经关闭了Autolayout,并且viewcontroller嵌入在导航控制器中.我正在使用Xcode 5,Storyboard.

我不明白为什么它会从顶部留下空间.实际上在故事板中我把我的标签正好放在导航栏下方.但是当我在模拟器上运行它然后它从顶部离开空间.

解决这个问题的一种黑客方法

-(void)viewWillLayoutSubviews
{
   self.scrollViewMain.frame = CGRectMake(0, -70, 320, 800);

   self.scrollViewMain.contentSize = CGSizeMake(320, 800);
}
Run Code Online (Sandbox Code Playgroud)

但我错过了一些非常简单的方法.

iphone objective-c uiscrollview ios6 ios7

66
推荐指数
5
解决办法
3万
查看次数

如何使ScrollView中的TableView滚动自然地表现出来

我需要做这个有奇怪配置的应用程序.

如下图所示,主视图是UIScrollView.然后里面应该有一个UIPageView,而PageView的每个页面都应该有一个UITableView.

数字

到目前为止我已经完成了这一切.但我的问题是我希望滚动行为 自然.

接下来是我的意思自然.目前,当我滚动其中一个UITableViews时,它会滚动tableview(而不是scrollview).但我希望它滚动ScrollView,除非scrollview无法滚动导致它到达顶部或底部(在这种情况下,我希望它滚动tableview).

例如,假设我的滚动视图当前滚动到顶部.然后我把手指放在桌面视图(显示的当前页面)上并开始向下滚动.在这种情况下,我希望滚动视图滚动(没有tableview).如果我继续向下滚动我的滚动视图并且它到达底部,如果我从显示器上移开手指并将其放回tebleview并再次向下滚动,我希望我的tableview现在向下滚动,因为滚动视图到达底部并且它不是能够继续滚动.

你们对如何实现这种滚动有任何想法吗?

我真的迷失了.任何帮助将非常感激它:(

谢谢!

uitableview uiscrollview uikit uipageviewcontroller swift

66
推荐指数
5
解决办法
5万
查看次数

使用滚动视图内的动态大小的控制器调整容器视图的大小

我正在尝试使用UIScrollView内部具有动态高度的控制器创建容器视图,并使用自动布局自动调整大小.

说明设置的故事板

视图控制器A是滚动视图,其中包含容器视图,以及下面的更多内容.

View Controller B是视图控制器,我希望它具有动态大小,并且所有内容都在View Controller A的Scroll View中以全高显示.

我有一些问题,让B的动态大小自动设置A中容器视图的大小.但是,如果我在A中的容器视图上设置高度约束 A中的容器视图例如250,

如果View Controller B也有250个高度,那么它将是预期的输出.它也适用于高度1000,所以据我所知,所有自动布局约束都正确设置.不幸的是,由于高度实际上应该是动态的,我想避免设置高度约束.

我不确定是否有任何设置视图控制器BI可以设置它根据其内容自动更新其大小,或者是否有任何其他技巧我错过了.任何帮助将非常感激!

根据视图控制器B的大小没有设置高度约束,有没有办法在A中调整容器视图的大小?

uiscrollview ios autolayout uicontainerview

64
推荐指数
3
解决办法
3万
查看次数