【问题标题】:How to implement the behaviour seen in the iOS lock screen when touching the camera icon?如何实现触摸相机图标时在 iOS 锁屏中看到的行为?
【发布时间】:2023-04-01 06:29:01
【问题描述】:

我正在尝试使用 UIPageViewController 实现触摸相机图标时在 iOS 锁定屏幕中看到的行为

我有一个 UIPageViewController 在两个视图控制器之间垂直滚动。当用户点击视图时,我想做一个小的“反弹/碰撞”。

关于如何实现这一点的任何想法?

谢谢!!

【问题讨论】:

  • 我认为实现这种效果的最简单方法是使用 UIKit Dynamics。这篇文章可能对您有所帮助:stackoverflow.com/questions/21892105/…
  • 谢谢!这似乎(是)是正确的线索:)
  • 没问题 :-) 如果您找到答案,请在此处写下您的解决方案。

标签: objective-c swift uipageviewcontroller


【解决方案1】:

感谢 @Szu 向我指出 UIKit Dynamics :)

这是一个粗略的解决方案:

使用控制器的视图(被反弹)和参考视图(您当前视图控制器的视图属性)调用 init。

例如。

FSBounceAnimator(contentView: viewController.view, referenceView: self.view)

viewController 是您可以实例化并添加为 childViewController 的任何 viewController

self.view 是你当前的 viewController 视图。

调用bounce(),反弹:)

import UIKit

class FSBounceAnimator: NSObject {

    var animator: UIDynamicAnimator
    var gravityBehaviour: UIGravityBehavior
    var pushBehavior: UIPushBehavior
    var itemBehaviour: UIDynamicItemBehavior

    init(contentView: UIView!, referenceView: UIView!) {

        animator = UIDynamicAnimator(referenceView: referenceView)

        var colisionBehaviour: UICollisionBehavior = UICollisionBehavior(items: [contentView])
        colisionBehaviour.setTranslatesReferenceBoundsIntoBoundaryWithInsets(UIEdgeInsetsMake(-100, 0, 0, 0))
        animator.addBehavior(colisionBehaviour)

        gravityBehaviour = UIGravityBehavior(items: [contentView])
        gravityBehaviour.gravityDirection = CGVectorMake(1, 1)
        animator.addBehavior(gravityBehaviour)

        pushBehavior = UIPushBehavior(items: [contentView], mode: UIPushBehaviorMode.Instantaneous)
        pushBehavior.magnitude = 0.0
        pushBehavior.angle = 0.0
        animator.addBehavior(pushBehavior)

        itemBehaviour = UIDynamicItemBehavior(items: [contentView])
        itemBehaviour.elasticity = 0.45
        animator.addBehavior(itemBehaviour)

        super.init()
    }

    func bounce() {
        self.pushBehavior.pushDirection = CGVectorMake(0.0, 100.0);
        self.pushBehavior.active = true;
    }

}

【讨论】:

    猜你喜欢
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多