在UIView使用旋轉的Function
CGAffineTransformRotate --對影像作一個以中心為圓心的旋轉,並會修改image的資料CGAffineTransformMakeRotation-只顯示旋轉結果,不會修改image資料,因此只會顯示旋轉一次的結果。
example
Image1.transform = CGAffineTransformRotate(Image1.transform, 角度*PI/180);
Image1.transform = CGAffineTransformMakeRotation(角度*PI/180);
以下例子改自前一篇
1. 增加一個角度的Slider
2. 將元件註冊到mainViewController.h
@property (weak, nonatomic) IBOutlet UISlider *rotationSlider;
@property (weak, nonatomic) IBOutlet UILabel *rotationLabel;
3. 增加相關的程式碼到mainViewController.m
@synthesize rotationLabel;
@synthesize rotationSlider;
int change = 1;
#define kDuration 2 // 动画持续时间(秒)
#define PI 3.14159
.....
- (IBAction)transferAction:(id)sender {
UIButton *button = (UIButton *)sender;
NSInteger tag = button.tag;
CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:kDuration];
switch (tag) {
case 105:
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES];
break;
case 106:
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
break;
case 107:
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
break;
case 108:
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
break;
default:
break;
}
self.typeID += 1;
if (self.typeID > 3) {
self.typeID = 0;
}
if (twoImageMode.on == YES) {
NSUInteger image1 = [[self.view subviews] indexOfObject:self.Image1];
NSUInteger image2 = [[self.view subviews] indexOfObject:self.Image2];
[self.view exchangeSubviewAtIndex:image1 withSubviewAtIndex:image2];
}
else {
[self removeImageView];
if (image1Enable.on == YES) {
if (unlimitChange.on == YES)
Image1.transform = CGAffineTransformScale(Image1.transform, xValueSlider.value
, yValueSlider.value);
else
Image1.transform = CGAffineTransformMakeScale(xValueSlider.value
, yValueSlider.value);
if (unlimitChange.on == YES)
Image1.transform = CGAffineTransformRotate(Image1.transform,
rotationSlider.value*PI/180);
else
Image1.transform = CGAffineTransformMakeRotation(rotationSlider.value*PI/180);
Image1.alpha = transparentSlider.value;
[self.view addSubview:Image1];
[self.view sendSubviewToBack:Image1];
}
else {
if (unlimitChange.on == YES)
Image2.transform = CGAffineTransformScale(Image2.transform, xValueSlider.value
, yValueSlider.value);
else
Image2.transform = CGAffineTransformMakeScale(xValueSlider.value
, yValueSlider.value);
if (unlimitChange.on == YES)
Image2.transform = CGAffineTransformRotate(Image2.transform,
rotationSlider.value*PI/180);
else
Image2.transform = CGAffineTransformMakeRotation(rotationSlider.value*PI/180);
Image2.alpha = transparentSlider.value;
[self.view addSubview:Image2];
[self.view sendSubviewToBack:Image2];
}
}
[UIView setAnimationDelegate:self];
// 动画完毕后调用某个方法
//[UIView setAnimationDidStopSelector:@selector(animationFinished:)];
[UIView commitAnimations];
if (change == 1)
change = 2;
else
change = 1;
}
.....
- (IBAction)rotationAngleChange:(id)sender {
rotationLabel.text = [NSString stringWithFormat:@"旋轉角度:%3.1f度", rotationSlider.value];
}
4. 執行結果,顯示X方向反轉及90度旋轉的不同






































