3

背景画像とその上にテキストバブルを組み合わせたアプリを作成しようとしています。leftCapWidthとtopCapHeightが定義されたストレッチ可能なUIImageとして初期化されたテキストバブルがあります。アプリ自体にテキストバブルを表示している間、すべてが正常に機能し、テキストバブルは通常どおり表示され、その上に線は描画されません。

ただし、画像をエクスポートしようとすると、UIGraphicsBeginImageContext()関数を使用して、背景画像とテキストバブルを上部に結合します。テキストバブルには、垂直線と水平線が描画されていることがわかります。これらは、leftCapWidthとtopCapHeightで定義されたポイントに描画されているようです。誰もが以前にそのような問題に直面しましたか?

アプリで画像をレンダリングしてエクスポートする場合の唯一の違いは、UIImageViewsを使用してストレッチ可能な画像を保持し、エクスポートするときにUIImagesを使用していることです。

バブル画像を背景画像に結合するためのコード:

UIGraphicsBeginImageContext(mainImage.size);

[fullSectionImage drawInRect:CGRectMake(0, 0, mainImage.size.width, mainImage.size.height) blendMode:kCGBlendModeNormal alpha:1.0 ];

UIImage *bubbleImage = [UIImage imageNamed:@"bubble1.png"];
stretchableImage = [bubbleImage stretchableImageWithLeftCapWidth:40 topCapHeight:15];
[stretchableImage drawInRect:CGRectMake(originX,originY,width,height) blendMode: kCGBlendModeNormal alpha:1.0 ];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();   
UIImageWriteToSavedPhotosAlbum(newImage, nil,nil,nil);

アプリの背景画像と同じバブルを表示するためのコード:

UIImageView *bubbleImageView;
UIImage *bubbleImage = [UIImage imageNamed:@"bubble1.png"];
stretchableImage = [bubbleImage stretchableImageWithLeftCapWidth:40 topCapHeight:15];
bubbleImageView = [[UIImageView alloc] initWithImage:stretchableImage];
[bubbleImageView setFrame:CGRectMake(0,0,width,height)];
bubbleImageView.autoresizingMask = YES;
[self addSubview:bubbleImageView];
4

1 に答える 1

3

この問題を解決するには、stretchableImageは、引数としてすべての整数値を使用してdrawInRectメソッドを使用する必要があります。

[stretchableImage drawInRect:CGRectMake(originX,originY,width,height) blendMode: kCGBlendModeNormal alpha:1.0 ];

この場合、originX、originY、width、heightは整数値である必要があります。これで問題は解決しました。

于 2012-06-13T11:26:55.153 に答える