首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >UIScrollView ScrollRectToVisible -不使用动画=是

UIScrollView ScrollRectToVisible -不使用动画=是
EN

Stack Overflow用户
提问于 2011-08-23 15:36:00
回答 2查看 9.8K关注 0票数 5

我有一个UIScrollView,它包含一个按钮。当按下按钮时,我想使用scrollRectToVisible滚动到视图的底部。

例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CGRect r = CGRectMake(0, myUIScrollView.contentSize.height - 1, 1, 1);
[myUIScrollView scrollRectToVisible:r animated:YES];

如果我将动画设置为“不”,那么一切都如预期的那样工作,但如果我将其设置为“是”,我就会看到非常奇怪的行为:

  • 基本上什么都不会发生。如果我反复点击按钮,
  • 可能会滚动几个像素,或者一直滚动。
  • 但是如果我按下按钮之前用手指手动滚动视图,它就有机会像预期的那样滚动到底部,但这不是一件确定的事情。

我把_geScroll_Settings.contentSize打印出来了,就像预期的那样.

我还试图通过启动一个计时器来延迟对scrollRectToVisible的调用,但是结果几乎是一样的。

scrollView是相当普通的。我在界面构建器中创建它。我正在启动时动态地添加滚动视图的内容,并适当地调整它的contentSize,但这一切似乎都很好。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2011-08-23 18:07:26

我打赌scrollRectToVisible退出是因为可见区域无效(1x1),或者y偏移量刚好超出界限,您是否尝试过用scrollView的可见区域大小来设置它?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CGRect rectBottom = CGRectZero;
rectBottom.size = myUIScrollView.frame.size;
rectBottom.origin.y = myUIScrollView.contentSize.height - rectBottom.size.height;
rectBottom.origin.x = 0;

[myUIScrollView scrollRectToVisible:rectBottom animated:YES];

对不起,我不能帮你更多,但我现在不在我的Mac上,所以我不能运行测试。上面的代码将创建一个CGRect,其大小正好适合scrollView可见部分,偏移量将是其中的最后一个可见部分。

票数 6
EN

Stack Overflow用户

发布于 2013-12-21 05:39:02

我遇到了一个类似的问题,包括“如果我将动画设置为0,一切都按预期工作”部分。

结果是,在iOS 6上,UITextView自动滚动其最近的父UIScrollView,使光标在成为第一个响应器时可见。在iOS 7上没有这样的行为。UIScrollView似乎被同时对scrollRectToVisible的两个调用弄糊涂了。

在iOS 6上,我对scrollRectToVisible的显式调用大部分时间都被忽略。它只会滚动使UITextView的第一行可见(自动滚动),而不是像在iOS 7上所做的那样。

要测试它,在Xcode 5中创建一个新的单一视图应用程序,将其部署目标设置为6.0,并为ViewController.m使用下面的代码。在iOS 6.1模拟器中运行它,滚动使UITextView隐藏并点击屏幕上的任何位置。您可能需要重试几次,但在大多数情况下,它只会使第一行可见。如果您重新启用WORKAROUD,那么UITextView就会嵌入到它自己的UIScrollView中,而对scrollRectToVisible的调用也会像预期的那样工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#import "ViewController.h"

//#define WORKAROUND

@interface ViewController ()
@property (nonatomic, strong) UIScrollView *scrollView;
@property (nonatomic, strong) UITextView *textView;
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.view addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTap)]];

    self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 240)];
    self.scrollView.contentSize = CGSizeMake(320, 400);
    self.scrollView.backgroundColor = [UIColor lightGrayColor];
    [self.view addSubview:self.scrollView];

#ifdef WORKAROUND
    UIScrollView* dummyScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(20, 280, 280, 100)];
    self.textView = [[UITextView alloc] initWithFrame:dummyScrollView.bounds];
    [dummyScrollView addSubview:self.textView];
    [self.scrollView addSubview:dummyScrollView];
#else
    self.textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 280, 280, 100)];
    [self.scrollView addSubview:self.textView];
#endif

    self.textView.backgroundColor = [UIColor grayColor];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil];
}

- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)viewTap
{
    if (self.textView.isFirstResponder) {
        [self.textView resignFirstResponder];
    }
    else {
        [self.textView becomeFirstResponder];
    }
}

- (void)keyboardWasShown:(NSNotification*)aNotification
{
#ifdef WORKAROUND
    [self.scrollView scrollRectToVisible:CGRectInset(self.textView.superview.frame, 0, -10) animated:YES];
#else
    [self.scrollView scrollRectToVisible:CGRectInset(self.textView.frame, 0, -10) animated:YES];
#endif
}

@end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7168780

复制
相关文章
UIScrollView视觉差动画
前言:看到凤凰新闻 头条栏目的编辑推荐新闻是这个效果,觉得不错,就想着实现一下,以下就是我的实现过程,示例代码请看这儿→UIScrollView视觉差动画。 总效果 一、首先实现一个基本的图集浏览
且行且珍惜_iOS
2018/05/22
7210
UIScrollView视觉差动画
那么拖拽中,逐渐移动复位rightView上的RightImage的X坐标:rightView.contentX = 需要移动距离长度 - 移动百分比 * 需要移动距离长度 ; leftView.contentX 和这个类似,交由小伙伴们去思考。
且行且珍惜_iOS
2018/05/21
8510
iOS开发之UIScrollView无限滚动
UIScrollView 的无限滚动主要应用在图片轮播器、欢迎界面等场景。首先需要说明的是,文本所讲的是一种"笨办法",但是好理解且容易实现,在图片不多的时候用它也无妨。它的原理是在要显示的图片前后各加一张图片即在第一张图片之前放最后一张图片,在最后一张图片之后放第一张图片,然后在滚动到边缘的时候,巧妙的过渡一下就可以"瞒天过海","以假乱真"的造成无限滚动的假象。网络上有很多只用三张或两张图片实现的方法,效率比这个方法高,但实现起来稍微麻烦一点,有兴趣的可以去深入研究。 实现步骤 1、根据需求准备几张图片
YungFan
2018/05/03
1.7K0
iOS开发之UIScrollView无限滚动
iOS开发UIScrollView使用详解 原
@property(nonatomic)CGPoint contentOffset;
珲少
2018/08/16
1.7K0
UIScrollView
前面两篇文章聊的UITableView和UICollectionView都是继承自UIScrollView,本篇文章就来简单聊聊UIScrollView。
拉维
2019/08/12
9080
UIScrollView
UIScrollView
UIScrollView UIScrollView全部API学习。 //1.设定滚定条的样式 typedef NS_ENUM(NSInteger, UIScrollViewIndicatorStyle) { UIScrollViewIndicatorStyleDefault, // black with white border. good against any background 黑白边框 UIScrollViewIndicatorStyleBlack, // black only. small
用户1941540
2018/05/11
1.8K0
UIScrollView的一步步实现1 简介1.1 工作原理1.2 UIScrollView常见的几个重要控件1.3 UIScrollView常见的重要属性1.4 手工代码实现拖动2 三个重要属性的进
1 简介 UIScrollView 是负责滚动的视图。苹果最强大的地方就在于其良好的UI展示,和UE体验。如果不会很好的使用UIScrollView,就等于丧失了苹果一般的法力。 移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限。当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容。 普通的 UIView 不具备滚动功能,不能显示过多的内容。 UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容 1.1 工作原理
stanbai
2018/06/28
1.6K0
IOS 翻页
1 import UIKit 2 3 class PageControlViewController:UIViewController, UIScrollViewDelegate { 4 5 var scrollView = UIScrollView() 6 var pageControl = UIPageControl() 7 var isPageControlUsed = false 8 override func viewDidLoad() { 9 super.viewDidLoa
用户5760343
2019/07/08
8100
xcode uiscrollview with paging and zoom
Here is a simple and sample code that demonstrate the photo slide function with zoom using uiscrollview.  image.png this is the first photo  image.png sliding image.png zooming in particular photo  1. first drag three photos to your project , size no
阿新
2018/04/12
1.1K0
xcode uiscrollview with paging and zoom
UIScrollView进阶技巧
UIScrollView是iOS开发中经常用到的UI控件,像图片轮播之类的效果都可以用UIScrollView来实现,当然轮播什么的网上有很多教程了,我就不多说了。今天主要讲三个跟交互有关的效果(稍微有点标题党啊,其实也没有多进阶……),也不是直接用的UIScrollView,而是它的子类UITableView和UIWebView。先看一下效果图吧,都来自我自己的项目:
Sheepy
2018/09/10
9830
UIScrollView进阶技巧
iOS滚动视图UIScrollView使用方法
滚动视图还满常见的,这里学习了一下基本所有的用法、属性设置和委托,单讲一个ScrollView也很简单,直接上代码远比一个个讲要清晰明了地多。
Cloudox
2021/11/23
1.6K0
iOS滚动视图UIScrollView使用方法
iOS开发之UIScrollView在Autolayout下的使用
一、使用的基本原则: 原则1:UIScrollView的size依赖于subviews 首先在StoryBoard中拖入一个UIScrollView,用Pin按钮,随意设置其布局。因为设置UIScrollView的布局约束是没有用的,UIScrollView的size(即contentSize)是根据其中的subviews所占据的size来计算的。当然,如果contentSize的内容不足以布满整个UIScrollView时,滚动条将不会出现,UIScrollView也不会滚动。 原则2:subviews的
YungFan
2018/04/24
9880
iOS学习笔记——滚动视图(scrollView)
滚动视图:在根视图中添加UIScrollViewDelegate协议,声明一些对象属性
全栈程序员站长
2022/07/18
1.4K0
Infinite Scrolling in UIScrollView
- (void)viewDidLoad {     [super viewDidLoad];          [theScrollView setContentSize:CGSizeMake(3 * theScrollView.bounds.size.width, theScrollView.bounds.size.height)];     [theScrollView setPagingEnabled:YES];          CGRect aFrame = theScrollView.bound
阿新
2018/04/12
5340
【iOS开发】UIScrollView 看不到内容、UIScrollView 不能滑动
初学者第一次使用 UIScrollView 的时候,很可能会遇到 UIScrollView 滑动不了,或者明明添加了内容,却看不到的问题。 这里展示最简洁、最常态化的一种在 UIScrollView 中添加可以滑动的 UIImageView 的案例。
KyXu
2019/04/11
1.6K0
【iOS开发】UIScrollView 看不到内容、UIScrollView 不能滑动
UIScrollView控件实现图片轮播
图片轮播.gif 主要实现思路是:根据图片总数及宽高设置好ScrollView的大小,每切换一张图片相当于在ScrollView上进行一个图片宽度的移动行为,并加入定时器,实现自动轮播。 点击进去,长按可以使用幻灯片模式自动轮播图片 ScrollView 里面嵌套ScrollView ,实现两只手指把图片放大放小功能。(图片位置未完善) Github源码地址
LeeCen
2018/10/11
2.5K0
UIScrollView控件实现图片轮播
UIScrollView 和 UIPageControl 实现启动滑动图[通俗易懂]
更多的关于NSUserDefaults的介绍请看:NSUserDefaults 简介
全栈程序员站长
2022/07/20
6630
vue tsx render函数 transition动画不生效
直接这样是没有过渡效果的 <transition> <div style={{display:this.isActive?'block':'none'}} > hello </div> </tran
ACK
2020/12/09
1.6K0
【动画原理续篇】Python Turtle动画不连续难题解决方案
前一段时间发过一篇小文“心中有剑,落叶飞花,皆是兵器”-Python动画原理揭示及案例,在文末提出了一个疑问:画图的速度比较慢。即使speed()调到最大(speed=0),也难以保证图像一下出现。这极大影响了动画效果。
一石匠人
2018/09/12
1.8K0
【动画原理续篇】Python Turtle动画不连续难题解决方案
动画 | 什么是计数排序?
我们知道快速排序的时间复杂度期望值是O(nlogn),其中O(logn)是利用了二分法进行远距离比较和交换元素的位置。如果不去做比较交换计算,有没有可能有一种算法,它的时间复杂度期望值能降低到O(n)线性时间呢?
我脱下短袖
2019/12/23
5200

相似问题

UIScrollView和scrollRectToVisible:动画:

21

iphone - UIScrollview - scrollRectToVisible慢速动画

10

ios: UIScrollView scrollRectToVisible不工作

29

UIScrollView: setContentOffset之间的差异:动画和滚动scrollRectToVisible:动画

12

多个UIScrollView的scrollRectToVisible不工作吗?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文