Tag: uiviewanimation

如何在UIViewanimation过程中animationUIView图层的子图层?

在视图的UIViewanimation中,通过在[UIView animateWithDuration:delay:options:animations:completion:]的options参数中包含UIViewAnimationOptionLayoutSubviews ,可以为其子视图设置[UIView animateWithDuration:delay:options:animations:completion:] 。 然而,当我们不是某个视图的背景层的时候,我找不到一个方法来为它的子层设置animation。 他们只是跳到适当的位置,以配合视图的新界限。 由于我正在使用图层而不是视图,看起来像我不得不使用核心animation而不是UIViewanimation,但我不知道如何(和何时)做到这一点,使图层animation将匹配视图animation。 这是我的基本问题。 如果你想知道我想要完成的具体事情,请阅读更多内容。 我已经创build了一个带有虚线边框的视图,在视图的图层中添加了一个CAShapeLayer(参见这个stackoverflow问题: UIView周围的虚线边框 )。 我调整了CAShapeLayer的path以匹配layoutSubviews视图的边界。 这个工作,但有一个化妆品的问题:当视图的边界animation在一个UIViewanimation(如在旋转期间),虚线边框跳转到视图的新边界,而不是平滑的animation,因为视图animation的边界。 也就是说,当视图animation时,虚线边框的右侧和底部不分别保持与视图的右侧和底部部分相邻。 我怎样才能从CAShapeLayer的虚线边界animation的边界animation的视图旁边? 我到目前为止所做的是将一个CABasicAnimation附加到CAShapeLayer上: – (void)layoutSubviews { [super layoutSubviews]; self.borderLayer.path = [UIBezierPath bezierPathWithRect:self.bounds].CGPath; self.borderLayer.frame = self.bounds; CABasicAnimation *pathAnimation = [CABasicAnimation animationWithKeyPath:@"path"]; [self.borderLayer addAnimation:pathAnimation forKey:nil]; } 这确实会使虚线边框生成animation,但它没有正确的计时function和animation持续时间以匹配视图animation。 另外,有时候,我们不希望虚线边框动起来,就像当视图第一次布局时,边框不应该从一些旧pathanimation到新的正确path; 它应该只是出现。

UIButton中的animation图像

什么是animationbutton的图像的最佳方式? 假设我想像6帧一样循环,并让用户仍然可以点击button? 我应该animation的图像,只是在界面build设者的顶部有一个不可见的button? 有没有一种方法来定义UIButtonanimation呢? 或者是更好的animation图像,并find用户的接触点,并采取行动?

如何制作一个秘密的iOS应用程序文本animation

我试图复制秘密应用程序的文本标签转换。 有没有人最好的方法来处理它? 看起来他们每个字母都以清晰的文字颜色开始,然后将其设置为灰色,然后将其设置为白色文字颜色。 以下是一些截图:

在键盘上同步animation键盘将同时显示键盘和硬件键盘和虚拟键盘

前言 所以我有一个以聊天部分为特色的应用程序,我正在同步键盘隐藏和显示的animation以及聊天input的兴衰。 以下是我正在使用的代码: 显示: – (void) keyboardWillShow:(NSNotification *)note { NSDictionary *keyboardAnimationDetail = [note userInfo]; UIViewAnimationCurve animationCurve = [keyboardAnimationDetail[UIKeyboardAnimationCurveUserInfoKey] integerValue]; CGFloat duration = [keyboardAnimationDetail[UIKeyboardAnimationDurationUserInfoKey] floatValue]; NSValue* keyboardFrameBegin = [keyboardAnimationDetail valueForKey:UIKeyboardFrameBeginUserInfoKey]; CGRect keyboardFrameBeginRect = [keyboardFrameBegin CGRectValue]; // working for hardware keyboard //UIViewAnimationOptions options = (UIViewAnimationOptions)animationCurve; // working for virtual keyboard UIViewAnimationOptions options = (animationCurve << 16); [UIView […]

animationUIView不按预期工作

在我的应用程序中,我使用的UIView其中包括UITableView , Buttons和Labels 。 它使用Storyboard创build。 当用户点击一个导航栏button时, UIView将从顶部到一定高度的animation出现,如果他们再次点击它,它将隐藏UIViewanimation(从该高度到顶部)。 和UIActionView一样。 它工作正常,如果UITableView没有logging。 但如果它有任何logging,在调用[self hideBasket] ,UIView从视图底部出现到顶部(不隐藏)。 //隐藏购物篮代码 -(void)hideBasket{ /*Finished Hiding the Basket [self.view sendSubviewToBack:_shoppingCartView]; [_shoppingCartView setHidden:YES]; _isShoppingCartSeen = NO;*/ CGRect basketFrame = _shoppingCartView.frame; basketFrame.origin.y = -basketFrame.size.height; [UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{ _shoppingCartView.frame = basketFrame; } completion:^(BOOL finished) { // Finished Hiding the Basket //[self.view sendSubviewToBack:_shoppingCartView]; // [_shoppingCartView setHidden:YES]; _isShoppingCartSeen […]

更改正在运行的animation的持续时间(速度)

我正在做一个无限期的旋转animation,当我第一次启动的时候,这个animation效果非常好。 我想实现的是能够在运行时改变旋转速度。 我在animationView中有这个function: -(void)startBlobAnimation:(float)deltaT { [UIView beginAnimations:@"Spinning" context:nil]; [UIView setAnimationCurve:UIViewAnimationCurveLinear]; [UIView setAnimationDuration:deltaT]; [UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationRepeatCount:FLT_MAX]; CGAffineTransform rotation = CGAffineTransformMakeRotation(-symmetryAngle); blobView.transform = rotation; // Commit the changes and perform the animation. [UIView commitAnimations]; } 在animation首次启动后用不同的deltaT值调用没有任何影响。 如果我添加[wheelView.layer removeAllAnimations]; 在函数的开始,然后它成功地停止animation,但不重新启动它。 我也尝试使用block命令来启动animation,结果相同。 在这一点上,我完全感到困惑。 有人可以解释问题是什么吗? 谢谢!

如何取消UIViews基于块的animation?

我目前主要关注以下问题: 我开始一个animation,其中2个对象属性被触发。 代码是: [UIView animateWithDuration:0.3 animations:^{ greyscaleImage.alpha = 1; activityIndicator.alpha = 1; } completion:^(BOOL f){ if(f) { [activityIndicator startAnimating]; } }]; 这工作正常。 我发现唯一的问题是,我有一个0.3秒的变化,崩溃的应用程序时,持有这个activityIndi​​cator和greyscaleImage的视图被释放。 为了使它更清晰,请设想一下ViewController,它的视图通过默认的iOS-mode-View方式呈现。 现在触发该animation,需要2分钟。 在达到那2分钟之前,你会发现animation很无聊,你想消除这种观点。 现在,视图,activityIndi​​cator和greyscaleImage被释放,animationo / c不知道该怎么做。 所以我想知道,在这里做什么+为什么debugging指向 } completion:^(BOOL f){ 而不是例如[activityIndi​​cator … 有没有办法,让用户在2分钟之前解散视图? 最好的祝福

iOS:完整的360度旋转使用块,而不是CABasicAnimation

这应该是非常简单的事情,但我没有成功地使用块来实现这个function。 这里有一些问题和答案,但是我发现所有这些都是通过使用CABasicAnimation而不是UIView基于块的animation来解决的,而这正是我所追求的。 下面的代码不起作用(基于块),没有animation: CGAffineTransform spin = CGAffineTransformRotate(spiningView.transform, DEGREES_RADIANS(360)); CATransform3D identity = CATransform3DIdentity; CATransform3D spin2 = CATransform3DRotate(identity, DEGREES_RADIANS(360), 0.0f, 0.0f, 1.0f); [UIView animateWithDuration:3.0f delay:0.0f options:UIViewAnimationOptionCurveLinear animations:^ { spiningView.transform = spin; //spiningView.layer.transform = spin2; //Have also tried the above, doesn't work either. } completion:^(BOOL finished) { spiningView.transform = spin; //spiningView.layer.transform = spin2; }]; 根据我的理解,当我们每次使用基于块的时候,都不会发生animation,当UIViewAnimation Block“看到”开始值和最终值相同时。 公平的说,把它设置成360度就意味着对象停留在原来的位置。 但它必须是一种使用基于块的animation来制作这个animation的方法,因为下面的CABasicAnimation可以完美地工作: […]

自动布局约束更改不animation

我正在学习教程中的animation自动布局 http://weblog.invasivecode.com/post/42362079291/auto-layout-and-core-animation-auto-layout-was 事情正在完善。 当我尝试在我的应用程序中使用这个概念时,试图从底部到顶部设置一个设置屏幕(UIView)的animation,当设置屏幕只是一个空的UIView时, 但是,如果我添加一个UILabel作为子视图到这个设置屏幕,animation就消失了。 在从设置屏幕删除这个UILabel时,animation是可见的。 这是我连接的网点 __weak IBOutlet UIView *settingsView; __weak IBOutlet NSLayoutConstraint *settingsBottomConstraint; __weak IBOutlet NSLayoutConstraint *settingsViewHeightConstraint; 查看没有负载设置方法(setupViews) -(void)setupViews { settingsBottomConstraint.constant = – settingsViewHeightConstraint.constant; [settingsView setNeedsUpdateConstraints]; [settingsView layoutIfNeeded]; isSettingsHidden = YES; } 隐藏/取消隐藏方法 – (IBAction)showSettingsScreen:(id)sender { if (isSettingsHidden) { settingsBottomConstraint.constant = 0; [settingsView setNeedsUpdateConstraints]; [UIView animateWithDuration:.3 animations:^{ [settingsView layoutIfNeeded]; }]; } else{ settingsBottomConstraint.constant […]

animation导航栏标题文本更改

在我的应用程序中,我有一个页面视图控制器,允许用户在应用程序的不同“部分”之间滑动,并在导航栏的顶部将标题文本更改为用户通过pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:滑动到的新部分pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted: 目前,animation完成后,立即更改标题文本。 我想用一些animation来改善它,一种微妙的淡入淡出效果。 我首先试图实现[UIView animationWithDuration:…]animation改变标题文本,但它不animation,只是仍然立即更新。 然后,我想知道是否有可能更新导航栏标题的alpha,因为用户基于滚动的距离而水平滚动,当下一个部分即将进入屏幕时达到0 alpha,那么我可以立即在0时更改文本,然后快速淡入1 alpha。 但是当滚动位置已经更新时,我没有在UIPageViewControllerDelegate上看到一个方法。 如果可能,而不是淡入淡出,我可以淡入淡出以及在导航栏中移动标题文本位置,就像从通过滑动手势从推播返回导航时发生的默认animation一样。 当用户滚动时,我会滑动旧节标题,并在另一侧提供下一节标题,以便在转换完成时,前一节标题离开屏幕,并且新节点完全居中以便replace完成。 但是,这又需要知道用户究竟有多less滚动页面视图控制器。 是否有可能实现任何所需的animation?