我尝试过使用这样的核心动画:
- (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上轮换吗?
如果我想改变旋转的方向我该怎么做?它在分钟顺时针旋转.
谢谢
我正在与动画挣扎,找不到我想要的东西.我想对视图应用3d旋转.像立方体旋转一样,视图应该有两个图像,并且像iphone通知动画一样从一个图像旋转到另一个图像.我想要的动画就像这样:http://www.youtube.com/watch?v = pBgVbzBJqDc
我甚至不认为如何做到这一点,所以任何帮助将非常感激!
提前致谢!
请考虑以下动画:
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 闪烁.我也玩过additive和cumulative属性无济于事.有什么建议?
该核心动画编程指南让我相信,一个子层可以在默认情况下,主视图的边界之外延伸,而不被修剪.但这不是我发生的事情.
以下是我初始化图层托管自定义视图的方法:
- (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) 我正在尝试缩放,AVCaptureVideoPreviewLayer以便它显示相机的“放大”预览;我可以使用来完成这项工作setAffineTransform:CGAffineTransformMakeScale(2.0f, 2.0f),但是只有在屏幕上可见该图层时才可以。也就是说,除非我CATransaction在回调之类的过程中(从内调用),否则缩放转换似乎不会生效。viewDidAppear。
我真正想做的是在图层变得可见之前应用比例转换,例如在我初始化并将其添加到UIView图层时,但是我所做的所有尝试都被证明是徒劳的。如果我在这一点上设置了转换,然后尝试在可见时重新读回该值,则它似乎具有所需的比例转换集-但这对视图没有任何影响。我是iOS编程的新手,所以我确定这里缺少一些基本知识;任何帮助表示赞赏!
是否可以将a的内容设置为CALayer动画GIF并让它显示该动画?我知道我可以将内容设置为如下图像:
CALayer* subLayer = [CALayer layer];
NSImage *image = [[NSImage alloc] initWithData:data];
subLayer.contents = image;
Run Code Online (Sandbox Code Playgroud)
并且图像将显示,但如果它是动画的,则不会显示动画.是获得了GIF的各帧的唯一解决方案,得到了帧速率,进而改变content根据帧速率子的?或者有一个更简单的方法,我忽略了?
我正在创建一个 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) 我想让我的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) 我在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)
怎么解决?我需要一些帮助.注意代码打印.
以下是我尝试根据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) core-animation ×10
ios ×7
objective-c ×5
calayer ×3
cocoa ×2
iphone ×2
swift ×2
uiview ×2
cocoa-touch ×1
macos ×1
pi ×1
rotation ×1