ios - 在 ScrollView 上使用 UIDynamicAnimator?
<p><p>我正在尝试在具有许多元素的 <code>scrollView</code> 上实现 <code>UIDynamicAnimator</code> 效果。我在任何地方都找不到太多关于它的信息,所以我只需要一些起点。</p>
<p>所以我有我的 <code>scrollView</code>,其中包含许多 <code>UIViews</code>。我想在滚动时为其“ subview ”制作任何类型的动画。 </p>
<p>试过了-什么也没发生。 </p>
<pre><code>//DYNAMICS ANIMATIONS
UIDynamicAnimator *dynamic=[ initWithReferenceView:scroller];
UIGravityBehavior *gravityBeahvior = [ initWithItems:mainCellsArray];
;
</code></pre>
<p>当 <code>mainCellsArray</code> 持有滚动条的所有“ subview ”时。</p>
<p><strong>编辑</strong>:
我对 <code>dynamic</code> 有一个强大的 <code>property</code> 。
该数组包含我的服装类指针,每个类都是 <code>UIView</code> 子类,它们都是滚动子类的。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>首先,确保将动画器定义为一个属性,而不仅仅是一个局部变量(我倾向于使用 <code>animator</code> 作为名称,以避免与 <code>@ 混淆动态</code>关键字):</p>
<pre><code>@property (strong, nonatomic) UIDynamicAnimator *animator;
</code></pre>
<p>然后实例化动画师:</p>
<pre><code>self.animator = [ initWithReferenceView:self.scrollView];
</code></pre>
<p>并添加重力:</p>
<pre><code>UIGravityBehavior *gravityBehavior = [ initWithItems:@];
;
</code></pre>
<p>如果您希望它们在到达 ScrollView 的 <code>contentSize</code> 底部时停止,则不能使用典型的 <code>translatesReferenceBoundsIntoBoundary</code> 设置。您必须自己制作一条路径,例如类似:</p>
<pre><code>UICollisionBehavior *collision = [ initWithItems:@];
CGRect contentSizeRect = {CGPointZero, self.scrollView.contentSize};
UIBezierPath *path = ;
;
;
</code></pre>
<p>或者,如果您希望它们飞离 ScrollView ,您可能希望在它们不再与 ScrollView 的 <code>contentSize</code> 相交时将它们移除:</p>
<pre><code>UIGravityBehavior *gravity = [ initWithItems:@];
UIGravityBehavior __weak *weakGravity = gravity;
CGRect contentSizeRect = {CGPointZero, self.scrollView.contentSize};
gravity.action = ^{
if (!CGRectIntersectsRect(contentSizeRect, viewToAnimate.frame)) {
NSLog(@"removing view");
;
;
}
};
;
</code></pre></p>
<p style="font-size: 20px;">关于ios - 在 ScrollView 上使用 UIDynamicAnimator?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/23738628/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/23738628/
</a>
</p>
页:
[1]