0

問題: 3つのUIImageViewがあります。1つにはがUIImageあり、他の2つはつまり--leftImageViewとrightImageViewです。leftImageViewには画像の左半分があり、右半分にはもう一方があります。Coregraphicsを使用してこれを実現しようとしています。つまり、2つの画像ビューで画像を描画しています。

しかし、正しいイメージビューが表示されていません。以下のコードを参照してください。

UIImage *image = imgView.image;
CGSize sz = [image size];
CGRect leftRect = CGRectMake(0, 0, imgView.frame.size.width/2, imgView.frame.size.height);
CGRect rightRect = CGRectMake(imgView.frame.size.width/2, 0, imgView.frame.size.width/2, imgView.frame.size.height);

CGImageRef leftReference =  CGImageCreateWithImageInRect([image CGImage], leftRect);
CGImageRef rightReference = CGImageCreateWithImageInRect([image CGImage], rightRect);

// Left Image ...
UIGraphicsBeginImageContextWithOptions(CGSizeMake(leftRect.size.width, leftRect.size.height), NO, 0);
CGContextRef con = UIGraphicsGetCurrentContext();
CGContextDrawImage(con, leftRect,flip(leftReference));

imgViewLeft = [[UIImageView alloc] initWithImage:UIGraphicsGetImageFromCurrentImageContext()];
UIGraphicsEndImageContext();
[self.view addSubview:imgViewLeft];


// Right Image ...
UIGraphicsBeginImageContextWithOptions(CGSizeMake(rightRect.size.width, rightRect.size.height), NO, 0);
con = UIGraphicsGetCurrentContext();
CGContextDrawImage(con, rightRect,flip(rightReference));

imgViewRight = [[UIImageView alloc] initWithImage:UIGraphicsGetImageFromCurrentImageContext()];
UIGraphicsEndImageContext();


[self.view addSubview:imgViewRight]; 
4

1 に答える 1

1

以下のコード部分が使えると思います。

UIImage *image = [UIImage imageNamed:@"xxx.png"]; // You can change this line.
BOOL isLeft = YES; // You can change this variable(isLeft = YES : left piece, NO : right piece).

UIGraphicsBeginImageContext(CGSizeMake(image.size.width / 2, image.size.height));  

CGContextRef context = UIGraphicsGetCurrentContext();  

if (isLeft)
     CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, image.size.width, image.size.height), image.CGImage);
else
     CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(- image.size.width / 2, 0, image.size.width, image.size.height), image.CGImage);

UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();  
UIGraphicsEndImageContext();

return imageCopy;

今はこのコードを起動できませんでしたが、私のコードはほぼ正しいと思います。これを試してください。

編集 :

あなたのコードで:

// Right Image ...
UIGraphicsBeginImageContextWithOptions(CGSizeMake(rightRect.size.width, rightRect.size.height), NO, 0);
con = UIGraphicsGetCurrentContext();
CGContextDrawImage(con, rightRect,flip(rightReference));

imgViewRight = [[UIImageView alloc] initWithImage:UIGraphicsGetImageFromCurrentImageContext()];
UIGraphicsEndImageContext();

3行目に間違った部分があります:

 CGContextDrawImage(con, rightRect,flip(rightReference));

そのはず

 CGContextDrawImage(con, leftRect,flip(rightReference));
于 2012-12-04T07:32:22.407 に答える