1

ユーザーが画像の上にテキストを配置してカメラロールに保存できるアプリを作成しています。これを実装した方法は、ユーザーが写真を選択または撮影した後、テキスト フィールドが表示されることです。このテキスト フィールドは、ラベルのテキストを変更します。ユーザーがラベルをパンしたり、ピンチしてズームしたり、ラベルを回転したりできるように、ラベルにジェスチャ認識機能を配置しました。

stackoverflow の助けを借りて、画像の上にあるラベルのスクリーンショットをうまく撮ることができました。ただし、カメラ ロールに保存すると、ラベルのサイズや画像上の位置が認識されません。どんな助けでも大歓迎です。

ここで、画像をカメラロールに保存しています

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
     if (buttonIndex == 0)
{

    UIGraphicsBeginImageContext(_image.size);


    [_image drawInRect:CGRectMake(0, 0, _image.size.width, _image.size.height)];

    [_textLabel drawTextInRect:CGRectMake((_image.size.width - _textLabel.frame.size.width)/2, (_image.size.height - _textLabel.frame.size.height)/2, _textLabel.frame.size.width, _textLabel.frame.size.height)];

    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"WRDIT"
                                                      message:@"Your image has been saved to the Camera Roll"
                                                     delegate:self
                                            cancelButtonTitle:nil
                                            otherButtonTitles:@"OK", nil];

    [message show];

    UIImageWriteToSavedPhotosAlbum(resultingImage, nil, nil, nil);
}
}
4

2 に答える 2

0

だから私はそれを理解しました。UIImageとUILabelをUIViewに配置しました。

それから私はこれをしました:

 UIGraphicsBeginImageContextWithOptions(_containerView.bounds.size, _containerView.opaque, 0.0);

    [_containerView.layer renderInContext:UIGraphicsGetCurrentContext()];

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

これにより、パン、回転、スケーリングを処理できます。次に、この画像をカメラロールに保存するか、FB、Twitterなどに送信できます。

于 2013-01-14T22:23:08.403 に答える
0

100% 確信があるわけではありませんが、drawInRect:withFont:lineBreakMode:alignment:代わりにdrawTextInRect. Apple のドキュメントには、直接電話しないように書かれていますdrawTextInRect

drawTextInRect:

指定された四角形にレシーバーのテキスト (またはその影) を描画します。

- (void)drawTextInRect:(CGRect)rect

パラメーター

直角

テキストを描画する四角形。

討論

このメソッドを直接呼び出さないでください。このメソッドは、ラベルのテキストのデフォルトの描画動作を変更したいサブクラスによってのみオーバーライドされるべきです。

ドキュメントで使用する方法は次のとおりです。

drawInRect:withFont:lineBreakMode:alignment:

指定された外接する四角形、フォント、および属性を使用して、現在のグラフィックス コンテキストで文字列を描画します。

- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font 
                             lineBreakMode:(UILineBreakMode)lineBreakMode
                                 alignment:(UITextAlignment)alignment
于 2013-01-13T18:14:04.987 に答える