Tag: uiscrollview

UIScrollView和setContentOffset

我的问题是关于这个方法: (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 我已阅读文档,但我不明白这种方法是什么。 感谢您的答案。

UIScrollview setContentOffset与非线性animation?

我试图重新生成滚动视图的平滑animation,当您实际滚动到下一页时启用分页。 它似乎是UIViewAnimationCurveEaseInOut ,但我需要有一个“下一页”button,并以编程方式触发滚动。 这是我的代码: -(void) scrollToPage:(int)page { UIScrollView *scrollView = contentView; CGPoint offset = CGPointMake(scrollView.bounds.size.width * page, scrollView.contentOffset.y); [scrollView setContentOffset:offset animated: YES]; [self pageControlUpdate]; } -(void) scrollToNextPage { [self scrollToPage:(pageControl.currentPage + 1)]; } 我不能设法重现UIViewAnimationCurveEaseInOut ,无论是与setContentOffset ,或与scrollRectToVisible平滑…它进入下一个页面,一个丑陋的线性animation 我甚至试图手动animation: [UIView animateWithDuration:.5 delay:0 options:UIViewAnimationCurveEaseInOut animations:^{ scrollView.contentOffset = offset; } completion:^(BOOL finished) { } ]; 我错在哪里?

如果(设备== iPad),如果(设备== iPhone)

所以我有一个通用的应用程序,我设置了一个UIScrollView的内容大小。 iPhone和iPad上的内容大小显然不同。 我怎样才能为iPad设置一定的尺寸,为iPhone和iPod设置另一个尺寸?

具有滚动视图和键盘的iOS AutoLayout

我有一个视图在我的故事板上显示用户login窗体,所以它看起来像这样:主视图 – >滚动视图 – >内容视图 – >两个文本字段和顶部loginbutton和一个注册button在底部风景。 我使用自动布局,底部button有底部空间的限制。 当我点击文本字段和键盘出现我想滚动视图更改大小可见矩形,但内容大小应保持向下滚动到注册button,但滚动视图的大小更改时button向上移动。 我怎么能做我想要的? 出现键盘时使用此代码: – (void)keyboardWillShow:(NSNotification *)aNotification { NSDictionary *info = [aNotification userInfo]; NSValue *kbFrame = [info objectForKey:UIKeyboardFrameEndUserInfoKey]; NSTimeInterval animationDuration = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; CGRect keyboardFrame = [kbFrame CGRectValue]; CGSize s = self.scrollView.contentSize; CGFloat height = keyboardFrame.size.height; self.scrollViewBottomLayoutConstraint.constant = height; [UIView animateWithDuration:animationDuration animations:^{ [self.view layoutIfNeeded]; [self.scrollView setContentSize:s]; }]; […]

检测对UIWebView的滚动视图的contentSize的更改

我试图在UIScrollView的内容的底部设置一个UIView,所以我把视图的位置设置为scrollview的contensize heigth。 但我的scrollview是一个UIWebView的子视图,所以当图像加载时,contentig heigth改变,我的视图应该是在滚动视图的底部结束在中间… 所以我正在寻找一种方式来通知当滚动视图的contentize变化。 我试图将其子类化,并更改setter为contensize发送一个NSNotification: @implementation UIScrollView (Height) -(void)setContentSize:(CGSize)contentSize { _contentSize=contentSize; [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"scrollViewContentSizeChanged" object:nil]]; } @end 但在编译我得到和错误说: “_OBJC_IVAR _ $ _ UIScrollView._contentSize”,引用自: – MyClass.o中的[UIScrollView(Heigth)setContentSize:] ld:symbol(s)not found for architecture armv7 任何想法如何二传手应分类? 谢谢 !

什么是可接受的FPS滚动,以及提高性能的提示是什么?

我在许多WWDCvideo中看到,要尽可能接近60.0 FPS以获得更好的平滑滚动体验。 我有一个UIScrolLView一次加载图像和几个表视图。 目前我得到30 FPS。 这是推荐的FPS的一半。 只是想知道什么FPS你们通常得到一个表视图/滚动视图加载图像和其他重要的东西/渲染的东西。 任何其他提示opsiming FPS? 我已经花了上个星期,直到现在使用时间分析器,分配和核心animation工具来启动乐器,尽可能地进行优化。 只是为了澄清一下我有什么。 我在iPad上有砖石/瀑布/ pinterest风格的布局。 所以这不仅仅是一个普通的UITableView。 这是一个UIScrollView填充整个屏幕,并充满了一些UIView的。 每个视图都有一个150×150的UIImageView和一个UITableView,同时它也有一些用Core Text绘制的标签。 所以,当你看到屏幕时,一眼就可以看到5-8个表格视图,每个单元格都有一个UIImageView,然后每个单元格渲染使用核心文本绘制的归属标签。 所以你可以想象这有多深和复杂。 这不仅仅是一个带有UIImageView的常规表格视图。 我知道如何获得60 FPS只有一个UITableView与UIImage的iPhone。 这个概念是asynchronous加载图像,而不是尽可能地阻塞主线程。 编辑: 看来这里的问题是我在我的视图中的UITableView ..当我从UIView中删除,我得到真正平滑的滚动.. 我上传了一个简单版本的示例项目,但它清楚地显示了这个问题。 链接在这里

缩放弹跳时,UIScrollView的zoomScale属性不会更新

现在我有一个在UIScrollView之外的视图。 出于很多原因,它不能简单的在scrollview里面。 所以现在我所做的是,当UIScrollView缩放/平移,我更新我的其他辅助视图。 我要进入的唯一问题是,当视图反弹到最小或最大比例时,zoomScale值不进行调整。 任何build议如何获得这个价值,而它的animation回来? 示例代码: self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, appSize.width, appSize.height)]; self.scrollView.contentSize = CGSizeMake(appSize.width * 2, appSize.height * 2); self.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; self.scrollView.delegate = self; self.scrollView.bounces = YES; self.scrollView.bouncesZoom = YES; self.scrollView.alwaysBounceHorizontal = YES; self.scrollView.alwaysBounceVertical = YES; self.scrollView.showsHorizontalScrollIndicator = YES; self.scrollView.showsVerticalScrollIndicator = YES; self.scrollViewZoomView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, appSize.width * 2, […]

处理触摸嵌套的UIScrollView以相同的方向滚动

我有两个嵌套的UIScrollViews,都在垂直方向滚动。 我需要滚动到外部滚动视图,以允许内部滚动视图滚动之前的最大范围。 内滚动视图不应滚动,直到外滚动视图达到其最大范围。 这是一个例子: 在左图中, Scrollview B的垂直拖动应该移动Scrollview A和滚动Scrollview B不应该可滚动(但仍然需要能够接收触摸/点击)。 一旦Scrollview A达到其最大范围(当Scrollview B到达屏幕的顶部时),则滚动Scrollview B应该滚动。 这需要一个连续的工作。 我试图从ScrollView A的scrollViewDidScroll: delegate方法切换ScrollView B的scrollEnabled ,但是这似乎不是一个可行的解决scheme,因为它不能在一个连续的运动中工作(例如:用户需要释放在Scrollview B到达屏幕的顶部之后再次触摸)。 实现这个目标的最好方法是什么?

animationUIScrollView contentInset导致跳跃口吃

我实现了一个自定义的刷新控制(我自己的类,而不是一个子类),出于某种原因,因为移动到iOS 8,设置滚动视图(具体来说,UICollectionView)的contentInset开始刷新animation会导致一个奇怪的跳跃/口吃。 这是我的代码: – (void)containingScrollViewDidScroll:(UIScrollView *)scrollView { CGFloat scrollPosition = scrollView.contentOffset.y + scrollView.contentInset.top; if( scrollPosition > 0 || self.isRefreshing ) { return; } CGFloat percentWidth = fabs( scrollPosition ) / self.frame.size.height / 2; CGRect maskFrame = self.maskLayer.frame; maskFrame.size.width = self.imageLayer.frame.size.width * percentWidth; [CATransaction begin]; [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; self.maskLayer.frame = maskFrame; [CATransaction commit]; } – (void)containingScrollViewDidEndDragging:(UIScrollView […]

如何在UIScrollView中将UIImageView旋转90度并显示正确的图像大小并滚动?

我有一个UIImageView里面的图像是在一个UIScrollView。 我想要做的就是将这个图像旋转90度,使它默认处于横向,并设置图像的初始缩放比例,使整个图像适合滚动视图,然后放大到100%,然后放大再次缩小到最小。 这是我迄今为止: self.imageView.transform = CGAffineTransformMakeRotation(-M_PI/2); float minimumScale = scrollView.frame.size.width / self.imageView.frame.size.width; scrollView.minimumZoomScale = minimumScale; scrollView.zoomScale = minimumScale; scrollView.contentSize = CGSizeMake(self.imageView.frame.size.height,self.imageView.frame.size.width); 问题是,如果我设置转换,没有什么显示在滚动视图。 但是,如果我注意到变换,除了图像以外的所有东西都不是我想要的风景方向! 如果我应用转换并删除设置minimumZoomScale和zoomScale属性的代码,则图像以正确的方向显示,但是使用不正确的zoomScale,看起来像contentSize属性设置不正确 – 因为不滚动到左/右方向的图像的边缘,但顶部和底部,但在边缘。 注意:正在从URL加载图像