10度旋转图像被切断

时间:2009-08-03 13:20:56

标签: iphone image uiimageview rotation

我用以下方式旋转图像:

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

3 个答案:

答案 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);