标签: core-animation

创建一个不断旋转的UIImageView

我尝试过使用这样的核心动画:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    [UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveLinear animations:^{ CGAffineTransform transform = CGAffineTransformMakeRotation(3.14);
        self->inner.transform = transform;
    } completion:NULL];
}
Run Code Online (Sandbox Code Playgroud)

这会旋转我的UIImageView,称为外部,但它没有顺利完成360度旋转im.它以3/4左右的方式跳跃.我不应该在PI上轮换吗?

如果我想改变旋转的方向我该怎么做?它在分钟顺时针旋转.

谢谢

pi core-animation objective-c rotation

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

应用3D动画进行查看

我正在与动画挣扎,找不到我想要的东西.我想对视图应用3d旋转.像立方体旋转一样,视图应该有两个图像,并且像iphone通知动画一样从一个图像旋转到另一个图像.我想要的动画就像这样:http://www.youtube.com/watch?v = pBgVbzBJqDc

我甚至不认为如何做到这一点,所以任何帮助将非常感激!

提前致谢!

iphone cocoa-touch core-animation objective-c ios

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

如何使图层保持CABasicAnimation的最终值

请考虑以下动画:

CABasicAnimation *pathAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
pathAnimation.duration = 1.0;
pathAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
pathAnimation.fromValue = [NSNumber numberWithFloat:0.0f];
pathAnimation.toValue = [NSNumber numberWithFloat:1.0f];
pathAnimation.removedOnCompletion = NO;
pathAnimation.delegate = self;
Run Code Online (Sandbox Code Playgroud)

这将基本上为从一端到下一端的图层绘制动画.问题是,一旦动画完成,该strokeEnd属性将重置为0(最初设置的位置).如何使最终值"坚持"?

我试图在animationDidStop委托方法中更改它.这大部分都有效,但strokeEnd即使放入CATransaction以禁用动画,也可能会暂时导致0 闪烁.我也玩过additivecumulative属性无济于事.有什么建议?

core-animation calayer ios

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

为什么我的CALayer被我的NSView剪辑?

核心动画编程指南让我相信,一个子层可以在默认情况下,主视图的边界之外延伸,而不被修剪.但这不是我发生的事情.

以下是我初始化图层托管自定义视图的方法:

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self != nil) {
        mBaseImage = [[NSImage imageNamed: @"Button.png"] retain];
        mSliderImage = [[NSImage imageNamed: @"Track.png"] retain];

        mRootLayer = [CALayer layer];
        mRootLayer.masksToBounds = NO;
        [self setLayer: mRootLayer ];
        [self setWantsLayer: YES];
        mRootLayer.contents = mBaseImage;

        mSliderLayer = [CALayer layer];
        [mRootLayer addSublayer: mSliderLayer];
        NSSize imSize = [mSliderImage size];
        NSRect sliderBounds = NSMakeRect( 0.0f, 0.0f, imSize.width, imSize.height );
        mSliderLayer.bounds = sliderBounds;
        mSliderLayer.contents = mSliderImage;
        mSliderLayer.position = NSMakePoint( 31.0f, 31.0f );
    }

    return …
Run Code Online (Sandbox Code Playgroud)

macos cocoa core-animation calayer

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

在显示图层之前应用CGAffineTransform

我正在尝试缩放,AVCaptureVideoPreviewLayer以便它显示相机的“放大”预览;我可以使用来完成这项工作setAffineTransform:CGAffineTransformMakeScale(2.0f, 2.0f),但是只有在屏幕上可见该图层时才可以。也就是说,除非我CATransaction在回调之类的过程中(从内调用),否则缩放转换似乎不会生效。viewDidAppear

我真正想做的是在图层变得可见之前应用比例转换,例如在我初始化并将其添加到UIView图层时,但是我所做的所有尝试都被证明是徒劳的。如果我在这一点上设置了转换,然后尝试在可见时重新读回该值,则它似乎具有所需的比例转换集-但这对视图没有任何影响。我是iOS编程的新手,所以我确定这里缺少一些基本知识;任何帮助表示赞赏!

core-animation objective-c ios

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

将CALayer的内容设置为动画GIF?

是否可以将a的内容设置为CALayer动画GIF并让它显示该动画?我知道我可以将内容设置为如下图像:

CALayer* subLayer = [CALayer layer];
NSImage *image = [[NSImage alloc] initWithData:data];
subLayer.contents = image;
Run Code Online (Sandbox Code Playgroud)

并且图像将显示,但如果它是动画的,则不会显示动画.是获得了GIF的各帧的唯一解决方案,得到了帧速率,进而改变content根据帧速率子的?或者有一个更简单的方法,我忽略了?

cocoa core-animation objective-c

0
推荐指数
2
解决办法
2215
查看次数

CALayer 展平子层

我正在创建一个 UI,其中有一副你可以从屏幕上滑动的卡片。

我希望能够做的是创建一个 UIView 的子类,它代表每张卡片,然后修改变换属性以将它们向后移动(z 轴)并向上移动一点(y 轴)以获得外观一副牌。

阅读它我发现我需要使用 CATransformLayer 而不是普通的 CALayer 以便 z 轴不会变平。我通过创建一个 CATransformLayer 将其添加到 CardDeckView 的图层中,然后将我所有的卡片添加到该 CATransformLayer 中。代码看起来有点像这样:

在初始化中:

// Initialize the CATransformSublayer
_rootTransformLayer = [self constructRootTransformLayer];
[self.layer addSublayer:_rootTransformLayer];
Run Code Online (Sandbox Code Playgroud)

constructRootTransformLayer(angle 方法是多余的,本来打算调整甲板的角度但后来决定不这样做):

    CATransformLayer* transformLayer = [CATransformLayer layer];
transformLayer.frame = self.bounds;

// Angle the transform layer so we an see all of the cards
CATransform3D rootRotateTransform =  [self transformWithZRotation:0.0];
transformLayer.transform = rootRotateTransform;
return transformLayer;
Run Code Online (Sandbox Code Playgroud)

然后添加卡片的代码如下所示:

// Set up a CardView as a wrapper for the contentView
RVCardView* cardView = [[RVCardView …
Run Code Online (Sandbox Code Playgroud)

core-animation objective-c calayer ios

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

UILabel没有像预期的那样出现延迟序列

我想让我的UILabel以延迟的顺序出现.因此一个接一个.当我使用alpha值使它们淡入时,下面的代码可以正常工作,但是当我使用UILabels的.hidden属性时它不会做我想要它做的事情.

代码使我的UILabel同时出现而不是sum1TimeLabel在5秒后出现,sum2TimeLabel在30秒后出现秒,最后sum3TimeLabel出现在60秒后出现.我究竟做错了什么?

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    UIView.animateWithDuration(5.0, animations:  {
        self.sum1TimeLabel!.hidden = false;
    })

    UIView.animateWithDuration(30.0, animations: {
        self.sum2TimeLabel!.hidden = false;
    })

    UIView.animateWithDuration(60.0, animations: {
        self.sum3TimeLabel!.hidden = false;
    })
}
Run Code Online (Sandbox Code Playgroud)

core-animation uiview ios swift

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

如何使用"getControlPoint(在idx:Int,值ptr:UnsafeMutablePointer <Float>!)"CAMediaTimingFunction

我在OC中使用此功能

CAMediaTimingFunction *function = [CAMediaTimingFunction functionWithName:
                                   kCAMediaTimingFunctionDefault];
//get control points
CGPoint controlPoint1, controlPoint2;
[function getControlPointAtIndex:1 values:(float *)&controlPoint1];
[function getControlPointAtIndex:2 values:(float *)&controlPoint2];

NSLog(@"%@, %@", NSStringFromCGPoint(controlPoint1), NSStringFromCGPoint(controlPoint2));
//{5.2386907149499368e-11, 7.9050503334599447e-323}, {0.0078125018189894035, 4.9406564584124654e-324}
Run Code Online (Sandbox Code Playgroud)

但如何将其转换为swift3.1,我这样做,但有些不对劲!

let timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionDefault)

var point1 = Float(0.0), point2 = Float(0.0)

timingFunction.getControlPoint(at: 1, values: &point1)
timingFunction.getControlPoint(at: 2, values: &point2)
print("\(String(describing: point1)),\(String(describing: point2))")
// 0.25,0.25
Run Code Online (Sandbox Code Playgroud)

怎么解决?我需要一些帮助.注意代码打印.

core-animation ios swift unsafemutablepointer

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

UIViewPropertyAnimator与Autolayout的问题

以下是我尝试根据Apple WWDC重复但使用自动布局的代码:

    extension AugmentedReallityViewController {
    @objc func handlePan(recognizer: UIPanGestureRecognizer) {
//        // hide languages and units anyway
//        moveUnitView(show: false)
//        moveLanguageView(show: false)
//
//        let isNowExpanded = settingsPanelState == SettingsPanelState.expanded
//        let newState = isNowExpanded ? SettingsPanelState.collapsed : SettingsPanelState.expanded
//
//        switch recognizer.state {
//        case .began:
//            startInteractiveTransition(state: newState, duration: 1)
//            isLastPanelUpdateToReachTheNewState = true // just in case, but we should change this property later
//        case .changed:
//            let translation = recognizer.translation(in: viewSettings)
//            let fractionComplete …
Run Code Online (Sandbox Code Playgroud)

iphone core-animation uiview ios uiviewpropertyanimator

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