问题标签 [contentoffset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 在 UICollectionView/UITableView 中为滚动视图的偏移设置动画会导致单元格过早消失
我们有一个 UICollectionView,其自定义布局与 UITableView 非常相似(它垂直滚动)。UICollectionView 只同时显示 3 个单元格,其中一个是当前活动的单元格:
(这里的活动单元格是#2。)单元格大约 280 点高,因此只有活动单元格在屏幕上完全可见。用户不直接滚动视图进行导航,而是水平滑动活动单元格以前进到下一个单元格。然后我们做一些花哨的动画并滚动 UICollectionView 使下一个单元格处于“活动”位置,从而使其成为活动单元格,将旧单元格移开并调出队列中的下一个单元格:
这里的问题是设置 UICollectionView 的偏移量。self.collectionView.contentOffset = targetOffset;
我们目前将它与其他三个动画属性一起设置在 UIView 动画块(运行,甚至在延迟间隔完成之前。这绝对不理想。
我已经想到了一些解决方案,但无法找出最好的解决方案:
荒谬地扩大 UICollectionView 的框架以适应五个单元格而不是三个单元格,从而迫使它将单元格保留在内存中,即使它们不在屏幕上。我试过这个并且它有效,但它听起来像一个非常肮脏的黑客。
对消失的单元格的渲染内容进行快照,将其放入 UIImageView 中,在单元格消失之前将 UIImageView 添加为滚动视图的子视图,在旧单元格的完全相同位置,一旦动画结束就将其删除。听起来不像以前的选项那么糟糕(至少在记忆方面),但仍然有点老套。我也不知道实现这一点的最佳方法,请指出正确的方向。
切换到 UIScrollView 的
setContentOffset:animated:
. 我们实际上曾经有这个,它修复了消失的单元格问题,但与其他 UIView 动画并行运行显然会争夺主线程的注意力,从而在单核设备上创建一个非常不稳定的动画(iPhone 3GS/ 4)。它也不允许我们更改动画的持续时间或缓动,因此感觉与其他动画不同步。如果我们能找到一种方法使其与 UIView 块动画协调工作,仍然是一个选择。切换到 UICollectionView 的
scrollToItemAtIndexPath:atScrollPosition:animated:
. 还没有尝试过,但它有一个很大的缺点:目标滚动位置只需要 3 个可能的常量(至少适用于这种情况)UICollectionViewScrollPositionTop
:UICollectionViewScrollPositionCenteredVertically
和UICollectionViewScrollPositionBottom
. 活动单元格可以改变其高度,但它始终必须距窗口顶部 35 点,并且这些选项不能提供足够的控制来完成设计。它也可能与 3.1 一样有问题。仍然是一个选项,因为可能有一种方法可以绕过我不知道的滚动位置,并且它可能与主线程没有相同的问题,这似乎不太可能。
任何帮助将不胜感激。请询问您是否需要澄清。非常感谢!
objective-c - UIScrollView:更准确/精确的 contentOffset 值?
我想知道是否有任何方法contentOffset
可以获得更准确contentOffset
的 当我的变化率非常小时,我试图执行一个动作,但是 0.5f 不够精确。contentOffset
UIScrollView
contentOffset
UIScrollView
任何帮助是极大的赞赏。
uiscrollview - UIScrollView 滚动时内容偏移重置
当用户拉下表格视图以使其可见时,我希望能够显示表格的部分标题视图。同样,当用户将标题推到视野之外时,我想隐藏它。
为此,我设置了一个内容插图来隐藏表格的顶部。我还设置了一个内容偏移来隐藏我想要显示的部分
问题是,当我滚动视图时,内容偏移量似乎会重置并显示我想要显示的部分,即使我将表格向上推也是如此。
这个问题阻止我使用scrollViewWillEndDragging:withVelocity:targetContentOffset:targetContentOffset
动画内容偏移相对于我滚动的方向。
这是我的代码(在viewDidAppear:
)
它是在滚动时更改的内容偏移的属性,还是我没有考虑到这里发生的其他事情?
一如既往的感谢
objective-c - 检测 UIScrollView 位置
我正在尝试在我的 iOS 应用程序中使用 UIScrollView 作为导航设备。基本上,我希望应用程序根据启用分页的 UIScrollView 的位置加载特定内容。它有点像导航轮。
目前,我有一个两页(2*320)的滚动视图,我正在使用scrollViewDidEndDragging
委托方法并contentoffset.x
加载适当的内容。我尝试这样确定滚动视图的位置:
我的问题是我要么不了解如何使用 contentoffset,要么不适合处理我的问题。无论哪种方式,我都被困住了。有人可以让我知道我哪里出错了和/或告诉我一个更有效的方法来确定滚动视图的位置吗?
我很愚蠢,我忘了提到问题是什么......基本上,我无法跟踪滚动视图的位置。当我移动到第二页时,它只会在我超过 620 限制(向右反弹)时记录更改。但是当我回到起始位置(第 1 页)时,它确实记录了更改。换句话说,我的跟踪不准确。
代表和其他一切工作正常,我记录他们!
objective-c - 从另一个 ViewController 设置 UIScrollView 的位置
我正在尝试通过使用 contentOffset 来设置 UIScrollView 的位置:
在我关闭它之前,我从另一个视图控制器调用这个方法,一切都检查出来了。我正确传递了参数,并调用了该方法(使用 NSLog 检查),但滚动视图没有移动......
有趣的是,当我从它所在的视图控制器调用此方法时,它工作正常。只有当我从另一个视图控制器调用它时,它才会停止工作。
仅供参考,这里是调用方法:
内容偏移量是我预先设置的 CGPoint。在这里没关系;此外,无论如何它都会正确传递。
uiscrollview - 默认情况下在 UICollectionView 中滚动 UISearchBar
我正在开发一个使用 UICollectionView(实际上是 PSUICollectionView)的项目,并且我在这个集合视图的顶部添加了一个 UISearchBar。我现在想做的是默认滚动这个搜索栏,直到用户把它拉下来。这种行为在 UITableView 中很容易实现,但是 UICollectionView 的 contentSize 直到 viewDidAppear 才被初始化!所以将 contentOffset 的 Y 设置为搜索栏高度没有任何效果,除非它是在 viewDidAppear 中完成的(这不是我想要的)。有人想出将 UISearchBar 与 UICollectionView 一起使用,以及如何使其默认滚动关闭吗?
谢谢!-阿米特
iphone - UITableView contentOffSet 无法正常工作
在中,我viewWillAppear
已将. 当视图加载时,我隐藏在使用 contentOffSet 的. 当用户拉下 tableview 时,会显示搜索栏。UISearchBar
UITableView
UISearchbar
UINavigationBar
UITableView
添加 headerview 后,我使用下面的代码将其隐藏。
但有时contentOffSet
并没有隐藏headerview。可能是什么错误。
ios - contentOffset 跳过 Log 中的值
所以我有以下代码:
输出是:
我现在的问题是:为什么它会“跳过”(例如为什么“actualPosition”从来没有这些值)485-489、491-511 和 513-549?它不应该为所有“位置”记录/给出actualPosition这个值,即使我滚动得更快?它对浮点数的工作方式相同,所以这无关紧要。我该如何解决这个问题,以便实际位置接收已滚动的每个位置的值?
iphone - UIScrollView 内容偏移量自动被重置
今天我遇到了一个奇怪的问题,我已经解决了这个问题,但是我不知道为什么会出现这个问题。场景如下
我有一个滚动视图,我将其内容偏移设置为
但是滚动视图委托首先将其偏移量设置为 800,然后是 48,然后是 28,即在表单的非滚动位置。
但是,如果我将它设置为 75 或任何其他数字,例如 80 90 甚至 100,它的工作正常。我也在使用
在这两种情况下。为什么会发生这种情况,为什么 800 不工作而 75 工作。
然后滚动视图内容大小为 (320,1010)。
代码:
objective-c - 如何执行“如果内容偏移量大于...”的操作
我已经到处找了几个小时,找不到适合我的解决方案。我要做的就是让我的应用程序在 uiscrollview 中的内容位置高于某个位置且低于另一个位置时执行某些操作。我希望这是有道理的。这是我认为可行的代码:
任何帮助将不胜感激!
编辑:如果忘记提及,如果我做了一个“if”语句来说明如果 contentOffset 等于它开始时的 contentOffset,则执行该操作。看起来 contentOffset 保持在加载应用程序时给出的值。我应该在应用程序的前面提到,我将 contentOffset 设置为一个值,但我不知道这是否会影响任何事情。