我用以下方式旋转图像:
UIImage *image = [UIImage imageNamed:@"doneBtn.png"];
CGImageRef imgRef = image.CGImage;
CGFloat width = CGImageGetWidth(imgRef);
CGFloat height = CGImageGetHeight(imgRef);
CGAffineTransform transform = CGAffineTransformIdentity;
CGRect bounds = CGRectMake(0, 0, width, height);
transform = CGAffineTransformRotate(transform, degreesToRadians(10));
UIGraphicsBeginImageContext(bounds.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextConcatCTM(context, transform);
CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0,0,width,height), imgRef);
UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
img.image=imageCopy;
当我显示图像时,我看到它在10度以下,但图像在边缘被切掉。
有人知道如何解决这个问题吗?这是一张图片以供澄清。
alt text http://img197.imageshack.us/img197/7077/problemkfr.png
昨天我一整天都在努力,但无法理解。
另一个示例图片:
alt text http://img25.imageshack.us/img25/3370/afbeelding6b.png
答案 0 :(得分:1)
SliderAppViewController.h中的代码
#import <UIKit/UIKit.h>
@interface SliderAppViewController : UIViewController {
IBOutlet UIImageView *imgView;
IBOutlet UISlider *mySlider;
}
@property (nonatomic, retain) IBOutlet UISlider *mySlider;
- (IBAction) sliderValueChanged:(id)sender;
@end
SliderApp.m中的代码
#import "SliderAppViewController.h"
@implementation SliderAppViewController
@synthesize mySlider;
- (IBAction) sliderValueChanged:(UISlider *)sender {
imgView.transform = CGAffineTransformMakeRotation(45);
}
- (void)viewDidLoad {
mySlider.minimumValue = 1.0;
mySlider.maximumValue = 100.0;
//other code
}
然后在IB中建立连接
答案 1 :(得分:0)
你的问题在这里是你的CALayer的锚点,我这里没有示例代码,但是如果你使用视图CALayer的anchor属性,你应该能够让视图看起来像你想要的那样。我稍后会尝试发布一些示例代码
答案 2 :(得分:0)
我现在解决了,我必须改变边界的宽度/高度值 CGContextDrawImage中的x / y
CGRect bounds = CGRectMake(0, 0, width+10, height+10);
CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(10,0,width,height), imgRef);