Iphone 10度旋转图像切断

Iphone 10度旋转图像切断,iphone,image,uiimageview,rotation,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; CGRec

我使用以下方法旋转图像:

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

有人知道怎么解决这个问题吗?这里有一张图片需要澄清

我昨天一整天都在努力,但还是想不出来

另一个示例图像:


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

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

CGRect bounds = CGRectMake(0, 0, width+10, height+10);
CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(10,0,width,height), imgRef);

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

然后在IB中建立连接

是否有旋转视图的屏幕截图?如果我看了锚,我可能会想到锚需要设置在什么位置,假设这就是问题所在:)它实际上与上面的示例图像相同,程度和图像大小几乎相同。我添加了另一个图像,我编辑了它。我希望这将澄清一点,它只是一个“完成”的系统按钮png。它现在也是镜像的,但那将是以后的事情,我首先希望它向右旋转。你看到发生了什么吗?视图锚定在0,0,你是按时钟方向旋转的(对吗?),因此,当你旋转视图时,视图被锚定在0,0,视图在顶部消失,请尝试将锚定设置为.5、.5,然后看看你得到了什么结果,(虽然不是很完美,但你可能能够找到答案)让我知道我是否在正确的轨道上我知道这将解决问题,但我认为这不是最终的解决方案,因为当你增加被转换图像的大小时,你可能不得不将这些值更改为更大的数字。你有没有找到真正的解决办法?谢谢
#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
}