标签: ios-animations

动画UIWebView在动画期间不响应触摸

目前,我正在UIWebView从屏幕底部向顶部制作动画.作为UIWebView动画向上变得不可触及为50 - 80的持续时间%.

如果我点击UIWebviews结束目的地或模型层,则会注册水龙头并Webview做出适当的响应.

为什么是这样?还有什么解决方案可以用于移动/动画UIWebViews

为了进一步说明这一点,我创建了一个侧向项目,UIWebView向上显示动画.紫色方块表示表示层上的触摸事件,而蓝色方块表示表示层之外的触摸事件.

https://github.com/AdamBCo/UIWebView-Animation-Issues

如示例所示,UIViewAnimationOptionAllowUserInteractionUViewAnimation块中设置.

animation objective-c uiwebview ios ios-animations

12
推荐指数
1
解决办法
296
查看次数

iOS Google Maps SDK新图标查看动画

根据有关GMSMarker新属性iconView的文档:

该视图的行为就像clipsToBounds设置为YES一样,无论其实际值如何

所以没有办法将clipToBounds改为NO?如果动画超出视图范围,它们应该如何工作?

动画示例

    let marker = GMSMarker()
    marker.title = "Stop 1"
    marker.position = CLLocationCoordinate2DMake(-33.86, 151.20)
    marker.map = mapView

    let imageView = UIImageView(image: UIImage(named: "markerIcon"))
    marker.iconView = imageView

    let pulseEffect = LFTPulseAnimation(repeatCount: Float.infinity, radius:45, position:imageView.center)
    marker.iconView.layer.insertSublayer(pulseEffect, below: imageView.layer)
Run Code Online (Sandbox Code Playgroud)

ios google-maps-sdk-ios swift ios-animations

8
推荐指数
0
解决办法
911
查看次数

iOS在完成之前停止animateWithDuration

我有一个CollectionView,我想在用户选择的CollectionViewCell中创建一个动画.我选择使用animateKeyframesWithDuration,因为我想逐步创建自定义动画.我的代码看起来像这样:

func animate() {
    UIView.animateKeyframesWithDuration(1.0, delay: 0.0, options: .AllowUserInteraction, animations: { () -> Void in
        UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: 0.5, animations: { () -> Void in
            //  First step
        })
        UIView.addKeyframeWithRelativeStartTime(0.5, relativeDuration: 0.5, animations: { () -> Void in
            //  Second step
        })
        }) { (finished: Bool) -> Void in
            if self.shouldStopAnimating {
                self.loadingView.layer.removeAllAnimations()
            } else {
                self.animate()
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

选中此选项后,将在自定义CollectionViewCell内执行此操作.问题是我想强制在某个时刻立即停止动画.但是当我这样做时,动画并没有完全停止,它只是将剩下的动画移动到另一个单元格(可能是最后一个重用的单元格?)

我不明白为什么会这样.我尝试了不同的方法,但在正常进入完成块之前,它们都没有成功停止动画

有没有人对此有任何想法?

ios animatewithduration swift ios-animations

5
推荐指数
1
解决办法
1192
查看次数

使用 UIViewControllerTransitionCoordinator animateAlongsideTransition 方法

我有一个 ViewController 可以说ViewControllerA,还有一个 ViewController 可以说ViewControllerB

ViewControllerBViewControllerA通过使用自定义转换以模态方式呈现。

在视图控制器A中:

-(void)buttonClicked...
{
  ViewControllerB * controller = [[ViewControllerB alloc] init];
  [controller setModalPresentationStyle:UIModalPresentationCustom];
  controller.transitioningDelegate = self;
  [self presentViewController:controller animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

在 ViewControllerA 中 -

#pragma mark - UIViewControllerTransitioningDelegate

- 

(id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented
                                                                      presentingController:(UIViewController *)presenting
                                                                          sourceController:(UIViewController *)source 
{

   FadeInWithPopAnimator* fadeInAnimator = [[FadeInWithPopAnimator alloc] init];
   return fadeInAnimator;
 }
Run Code Online (Sandbox Code Playgroud)

我有一个名为的自定义 Animator 类FadeInWithPopAnimator,它实现了transitionDuration 和animationTransition 方法。

ViewControllerB我想在过渡动画开始 0.2 秒后,在呈现的视图控制器上对几个视图进行动画处理。

我已经阅读了在线文档,看起来使用过渡协调器是正确的方法。但我应该把代码放在哪里呢?

1)在调用presentViewController时ViewControllerA

2)在动画师类中?

3)在viewWillAppear中ViewControllerA

我尝试了一些方法,但它没有给我结果,而且很难找到例子。

objective-c ios ios7 ios-animations

5
推荐指数
1
解决办法
8711
查看次数

启用了用户互动的自定义过渡动画

我有一个具有低Alpha背景的自定义全屏警报。默认的模态动画从下到上滑动。我想让警报淡入淡出。我是UIViewControllerTransitioningDelegate + UIViewControllerAnimatedTransitioning。在我的animateTransition(using:)方法中,我有类似的东西:

func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
        let containerView = transitionContext.containerView
        if let toView = transitionContext.view(forKey: .to) {
            toView.frame = containerView.frame
            containerView.addSubview(toView)
            UIView.animate(withDuration: duration, delay: 0,
                           usingSpringWithDamping: 0.5,
                           initialSpringVelocity: 0,
                           options: UIViewAnimationOptions.allowUserInteraction,
                           animations: {toView.alpha = 1})
            transitionContext.completeTransition(true)
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题在于淡入淡出效果大约在1-1.5秒左右;但是,用户在此过渡动画期间无法轻按任何按钮,例如“是”或“否”。我尝试了以下操作:

  • 将调用移至transitionContext.completeTransition(true)动画的完成处理程序之外,以便在动画开始时立即进行
  • 添加UIViewAnimationOptions.allowUserInteraction选项
  • 在另一篇文章中建议以0.1(和1.0)开始Alpha
  • 我确实注意到了UIViewControllerInteractiveTransitioning,但似乎这仅允许与动画本身进行交互

我能看到此工作的唯一方法是,如果我在VC中的viewDidAppear中执行淡入效果,而在UIViewControllerAnimatedTransitioning中执行淡出效果。觉得坏男人。正确的方法是什么?

uikit ios ios-animations

5
推荐指数
0
解决办法
246
查看次数

修复 SwiftUI 表单中奇怪的 DatePicker 动画行为

我在 SwiftUI 表单中使用 DatePickers 获得了一些奇怪的动画行为。一张图值一千字,所以我敢肯定一个视频值一百万字:https : //imgur.com/a/UHXqXOh

我试图让日期选择器在表单中展开然后折叠,就像在 Calendar.app 中创建新事件时的行为一样

发生在我身上的是:

  1. Section中的任何展开项(除了最后一项)都会正常打开,但是当它关​​闭时,展开的部分会向下滑动并逐渐消失,而不是向上滑动并逐渐消失。
  2. 该部分中的最后一项可以正确滑动,但根本不会褪色。它只是在过渡的开始/结束时出现然后消失

这些行为仅在表单中某处存在非 DatePicker 元素(例如 Text、Slider)时才会发生(不必在该特定部分)

这是我的内容视图:

struct ContentView: View {
    @State var date = Date()
    @State var isDateShown = false
    var body: some View {
            Form {
                Section(header: Text("Title")) {
                    DatePicker("Test", selection:$date)
                    DatePicker("Test", selection:$date)
                    Text("Pick a date").onTapGesture {
                        withAnimation {
                            self.isDateShown.toggle()
                        }
                       
                    }
                    if(isDateShown) {
                        DatePicker("", selection: $date).datePickerStyle(WheelDatePickerStyle()).labelsHidden()
                    }
                    
                }
                Section(header: Text("hello")) {
                    Text("test")
                }
        }
        
    }
}
Run Code Online (Sandbox Code Playgroud)

很高兴提供任何其他需要的东西

ios swift ios-animations swiftui swiftui-form

5
推荐指数
1
解决办法
1516
查看次数

转换不适用于嵌套在带有 Core Data 数据的 List 中的 ForEach

为什么起这个标题?

因为ListForEachCoreData是我认为的三个主要罪魁祸首......好吧,如果不只是.transition()它本身的话。

我想要的是

基本上,我想要一个存储在核心数据中的任务列表,并且在点击任务时,它就会随着.transition(.scale). 我尝试过的几种潜在解决方案在画布和模拟器中都失败了,其中两个是堆栈溢出:

  1. 添加视图时,SwiftUI 插入转换不起作用
  2. 过渡动画在 SwiftUI 中不起作用

其余的尝试只是将 插入.transition(.scale)到所有可能的位置,并且有/没有.animation(...)附加。


代码概述

这是我的错误视图的基本结构:

struct DeadlineListView: View {
    @FetchRequest(entity: Deadline.entity(),
                  sortDescriptors: [NSSortDescriptor(keyPath: \Deadline.dueTime, ascending: true)],
                  predicate: NSPredicate(format: "isCompleted == false"),
                  animation: Animation.linear(duration: 2)
    ) var deadlineList: FetchedResults<Deadline>
    
    // some other vars...
    
    var body: some View {
        VStack(spacing: 0.0) {
            HStack {
                // some other views...
            }
            
            // --- Where things matter most ---
            List …
Run Code Online (Sandbox Code Playgroud)

core-data ios ios-animations swiftui

5
推荐指数
1
解决办法
354
查看次数

在常见情况下何时使用Core Animation而不是UIView动画是合适的

这与许多小错误有关,这些小错误可能被一个人刻板地认为是次要的,但主要是另一个人.

我越来越注意到的是,当使用所有的味道时UIView animateWithDuration:,它实际上不必要地修改了一些东西,例如我的视图的多个属性,做一个简单的隐藏/显示样式动画等等.

在诸如UINavigationBar没有为某个旋转过渡正确设置位置动画的情况下,或者在帧更新时没有动态显示状态栏的标题视图,当视图的子图层在其父视图的情况下会隐式动画时,事情似乎很挑剔物业变化......

其中很多我一直在重新审视,并转换为CAAnimations,因为它们似乎更容易管理,因为它们实际上并没有修改我的视图的目标属性值.

一个简单的例子是,使用[view setHidden:],然后动画或视图外,但在动画运行时,视图实际上已经可见或隐藏.

另一个是,需要转换/旋转/缩放UINavigationController的视图,并使用CAAnimation来执行它,因为如果我修改UINavigationController的视图及其任何父视图的转换属性值,UINavigationBar不会移动到它的正确位置.

所以在这个问题的结论中,我一直在来回,并且在我的情况下找到了比另一个更合适的地方,但主要是,我想听听别人对这些情景的看法,如果有的话深入了解Apple提供的内容,让我对自己的方法感觉更好.

提前致谢.

animation core-animation uiviewanimation ios ios-animations

4
推荐指数
1
解决办法
1977
查看次数

在UIButton中禁用字体动画

我正在制作一个滑落的视图.在视图中有一个简单的UIButton.视图和按钮具有固定的宽度和高度(我通过添加颜色作为背景进行检查).虽然使用时:

[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
        //Slide Down the notification
        CGRect notificationsRect = self.notificationContainerView.bounds;
        notificationsRect.origin.y = 0;
        notificationViewController.view.frame = notificationsRect;
    } completion:^(BOOL finished) {
        [notificationViewController didMoveToParentViewController:self];
        self.currentNotification = notificationViewController; 
}];
Run Code Online (Sandbox Code Playgroud)

然后视图完美地向下滑动,期望UIButton中的文本逐渐消失.它开始非常小并且动画到正确的字体大小.

如何禁用UIButton中文本的动画?

objective-c uibutton uiviewanimation ios ios-animations

2
推荐指数
1
解决办法
641
查看次数

抖动搜索栏取消/结束编辑动画

我有一个 SearchBar,我正试图让它表现得像你在 iPhone 设置中看到的那样。当它被点击时,动画将放大镜从搜索栏的中间平滑地过渡到搜索栏的左侧,并平滑地引入取消按钮。但是,当我按下取消时,动画会冻结,然后跳回正常状态,搜索图标位于栏中间,取消按钮隐藏(请参阅 GIF 预览)。我的代码中有什么使这发生的吗?这是搜索条码:

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
    searchBar.setShowsCancelButton(false, animated: true)
}

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    self.view.endEditing(true)
    searchBar.setShowsCancelButton(false, animated: true)
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

ios swift ios-animations

2
推荐指数
1
解决办法
1131
查看次数