これが私の最初の質問で、iOSプログラミングの初心者です。
私はウェブ全体を検索しましたが、stackoverflowから多くのヒントが得られました。Xcodeヘルプを検索し、ビデオなどを視聴しましたが、それでもこれを機能させることができないようです。
約6つの異なるUIViewを持つ1つのビューがあります。UIViewの1つは、垂直パネルの別のUIViewの上にある矢印画像です。矢印の画像がタッチされ、2つの方法がトリガーされます
1つの方法では、パネルと矢印を右に移動します。もう1つの方法は、移動に合わせて矢印を回転させます。
CATransform3DMakeRotation
、、CGAffineTransformMakeRotation
を試しCATransform3DMakeRotation
ましたが、矢印の移動とパネルの移動で矢印を回転させることができません。
私が達成できた最高のものは、を使用したものでしたCATransform3DMakeRotation
が、これは矢印を反転させるだけで、回転をアニメートしません。
他のものは矢印を回転させますが、パネルの移動を許可しません。
これが矢印を回転させるための私のコードです。ご覧のように。私が試したたくさんのコメントアウトされたアイテム。
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInView:self.view];
CGRect bugRect = [[[RightArrow layer] presentationLayer] frame];
if (CGRectContainsPoint(bugRect, touchLocation)) {
[self RotateArrowOFF];
[self MovePanels];
NSLog(@"Arrow tapped!");
} else {
NSLog(@"Arrow not tapped.");
return;
}
}
-(IBAction)MoveLeftColorPanel
{
NSLog(@"Right Arrow Center %@", NSStringFromCGPoint(RightArrow.center));
}
- (void)MovePanels
{
if (_PanelsAreOffScreen == NO) {
[UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionLayoutSubviews animations:^{
RightPanel.center = CGPointMake(1065, 384);
}
completion:^(BOOL finished) {
NSLog(@"Animation 1 complete");
_PanelsAreMoving = YES;
}];
[UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
LeftPanel.center = CGPointMake(-50, 384);
}
completion:^(BOOL finished) {
NSLog(@"Animation 2 complete");
_PanelsAreMoving = YES;
}];
[UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
RightArrow.center = CGPointMake(1010, 82);
}
completion:^(BOOL finished) {
NSLog(@"Animation 3 complete");
_PanelsAreMoving = YES;
}];
_PanelsAreOffScreen = YES;
}
else {
[UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
RightPanel.center = CGPointMake(914, 384);
}
completion:^(BOOL finished) {
NSLog(@"Animation 5 complete");
}];
[UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
LeftPanel.center = CGPointMake(108, 384);
}
completion:^(BOOL finished) {
NSLog(@"Animation 6 complete");
}];
[UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
RightArrow.center = CGPointMake(836, 82);
}
completion:^(BOOL finished) {
NSLog(@"Animation 7 complete");
}];
_PanelsAreOffScreen = NO;
}
}
- (void)RotateArrowOFF//:(CGRect)rect
{
RightArrow.layer.anchorPoint = CGPointMake(0.06, 0.5);
if (_PanelsAreOffScreen == NO)
{
[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
[CATransaction setValue:[NSNumber numberWithFloat:2.0f] forKey:kCATransactionAnimationDuration];
CATransform3D RotateArrow = RightArrow.layer.transform;
RotateArrow = CATransform3DMakeRotation(M_PI,0.0,0.0,1.0);
RightArrow.layer.transform = RotateArrow;
}
else
{
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:2.0f] forKey:kCATransactionAnimationDuration];
CATransform3D RotateArrow = RightArrow.layer.transform;
RotateArrow = CATransform3DMakeRotation(0,0.0f,0.0f,1.0f);
RightArrow.layer.transform = RotateArrow;
[CATransaction commit];
}
}