标签: facebook-pop

如何直接将facebook开源代码pop添加到项目中

我从github下载了facebook开源代码pop.但所有头文件都是这样导入的:.我应该如何处理项目设置以在我的项目中支持这样的导入文件.我知道我可以通过替换all来运行它,但我会像pop样本项目一样使用开源.#import <POP/POPAnimatableProperty.h>#import <POP/XXX.h>#import XXX.h

facebook ios facebook-pop

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

如何使用Facebook Pop动画从中心缩放NSView?

请注意,这是与Mac OS X(NSView)相关的问题.

我正在尝试使用Facebook的POP动画从中心扩展NSView(到其大小的75%),然后再回到100%,但是我无法让它工作.鉴于kPOPLayerScaleXY似乎不起作用,我做了以下但是这给了我不正确的结果(因为它似乎从左上角向下缩小,而当zoomIn它为假时,它变得太大:

  CGRect baseRect = CGRectMake(0, 0, 30, 24);
  CGFloat scale = (zoomIn) ? 0.75 : 1.0;

  CGFloat x = baseRect.origin.x;
  CGFloat y = baseRect.origin.y;
  CGFloat width = baseRect.size.width;
  CGFloat height = baseRect.size.height;

  if (zoomIn) {
    width -= floorf((1.0 - scale) * width);
    height -= floorf((1.0 - scale) * height);

    x += floorf((width * (1.0f - scale)) / 2);
    y += floorf((height * (1.0f - scale)) / 2);
  }

  CGRect scaleRect = …
Run Code Online (Sandbox Code Playgroud)

macos core-animation nsview facebook-pop

3
推荐指数
1
解决办法
1423
查看次数

使用UINavigationController和UINavigationBar时,图层y位置的动画错误

我像往常一样设置和自定义UINavigationController's导航栏viewWillAppear:.然后我以0.6的间隔进行NSTimer射击viewDidLoad.此计时器触发我的动画代码.

我正在使用Facebook的POP框架,我想要做的就是使用以下代码稍微改变图层的y位置并弹回一点:

// Move object up
POPSpringAnimation *positionAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPositionY];
positionAnimation.toValue = @(self.myView.frame.origin.y - 5);
positionAnimation.springBounciness = 20;
positionAnimation.velocity = @(2000);
[self.myView.layer pop_addAnimation:positionAnimation1 forKey:@"positionAnimation"];
Run Code Online (Sandbox Code Playgroud)

出于某种原因,这总是会导致视图位于下方UINavigationBar.如果我切换到以下代码,视图将转到正确的位置:

POPSpringAnimation *frameAnimation = [POPSpringAnimation animation];
frameAnimation.property = [POPAnimatableProperty propertyWithName:kPOPViewFrame];
frameAnimation.toValue = [NSValue valueWithCGRect:CGRectMake(12, 24, 91, 116)];
[self.myView.layer pop_addAnimation:secondFrameAnimation forKey:@"frameAnimation"];
Run Code Online (Sandbox Code Playgroud)

问题是,如果我尝试向frameAnimation使用该velocity属性添加任何反弹,应用程序崩溃,我收到以下错误:

'Invalid value', reason: '2000 should be of type CGRect'
Run Code Online (Sandbox Code Playgroud)

如果我将我的positionAnimation代码放入一个不使用UINavigationController导航栏的新项目中,一切正常,视图会动画到正确的y位置.唯一的另一个区别是我当前的项目是从一个nib/xib文件加载这个视图,但一切都是在新的项目中以编程方式完成的.我不确定这与它有什么关系.

那么如何使用带导航栏的导航控制器,还能成功使用位置动画?

编辑:

我现在让动画正常工作,但仍然遇到一些非常奇怪的行为.以下是成功移动视图而不是将其置于以下位置的代码UINavigationBar …

uinavigationbar uinavigationcontroller ios facebook-pop

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

使用pop创建无尽的动画?

使用Coreanimation框架时,我可以设置动画重复.我想设置一个"吸引注意"模式的按钮,这将使他成长和缩小一小部分以引起用户的注意.

我已经通过完成块链接了增长和缩小动画.问题是我是否以及如何从第二个动画的完成块开始第一个动画.

我确实收到了以下有意义的警告.这个问题的优雅解决方案是什么?我不喜欢为这样的东西创造计时器.

在此块中强烈捕获'scaleAnimation'可能会导致保留周期

- (void)attractAttention:(BOOL)flag{
    _attractAttention = flag;
    float resizeValue = 1.2f;

        // Grow animation
    POPSpringAnimation *scaleAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerScaleXY];
    scaleAnimation.fromValue  = [NSValue valueWithCGSize:CGSizeMake(1.0f, 1.0f)];
    scaleAnimation.toValue  = [NSValue valueWithCGSize:CGSizeMake(resizeValue, resizeValue)];
    scaleAnimation.completionBlock = ^(POPAnimation *anim, BOOL finished) {
            // Grow animation done
        POPSpringAnimation *scaleAnimationDown = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerScaleXY];
        scaleAnimationDown.fromValue  = [NSValue valueWithCGSize:CGSizeMake(resizeValue, resizeValue)];
        scaleAnimationDown.toValue  = [NSValue valueWithCGSize:CGSizeMake(1.0f, 1.0f)];

        scaleAnimationDown.completionBlock = ^(POPAnimation *anim, BOOL finished) {
                // Shrink animation done
            if (_attractAttention) {
                [self.layer pop_addAnimation:scaleAnimation forKey:@"scaleUpAnimation"];
            }
        };

        [self.layer pop_addAnimation:scaleAnimationDown forKey:@"scaleDownAnimation"];
    }; …
Run Code Online (Sandbox Code Playgroud)

animation ios facebook-pop

0
推荐指数
1
解决办法
2618
查看次数