0

我旋转我的图像:

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 度以下看到它,但图像在边缘被切断。

有人知道如何解决这个问题吗?这是用于澄清的图像。

替代文字 http://img197.imageshack.us/img197/7077/problemkfr.png

我昨天一直在尝试一整天,但无法弄清楚。

另一个示例图像:

替代文字 http://img25.imageshack.us/img25/3370/afbeelding6b.png

4

3 回答 3

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 中建立连接

于 2011-03-26T07:33:37.693 回答
0

您的问题是您的 CALayer 的锚点,我这里没有示例代码,但是如果您使用视图 CALayer 的锚点属性,您应该能够使视图看起来像您想要的那样。我稍后会尝试发布一些示例代码

于 2009-08-03T13:31:09.993 回答
0

我现在解决了,我必须更改边界的宽度/高度值和 CGContextDrawImage 中的 x/y

CGRect bounds = CGRectMake(0, 0, width+10, height+10);
CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(10,0,width,height), imgRef);
于 2009-08-03T14:54:07.593 回答