2011-12-06 2 views
1

私は写真ベースのアプリを作成しようとしています。撮影された画像を切り取り、回転して移動したいと考えています。私はすでにこれらのことをしてきましたが、UIImageはUIViewController全体の動きを作りました。私はUIImageView内で動かすだけです。誰も私がこれを試してみる方法を提案することができますか?私はすでにいくつかの方法を試みましたが、彼らは働いていないようです。どんな提案も本当に役に立ちます。ありがとう!UIImageViewの外でUIImageが移動されないようにするにはどうすればよいですか?

更新

私はより良い私が何をしようとしている説明を助けるために自分のコードに追加しています。これをやっていないのは残念です。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
//the 'image' below is the UIImage, it has already been declared before hand 
image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 

//layoutOne is my UIView which holds my UIImageView and UIImage. all of those are declared in my .h file. 

layoutOne = [[UIView alloc] initWithFrame:CGRectMake(95.0, 107.0, 578, 682)]; 
theImageView = [[UIImageView alloc] initWithFrame:[layoutOne frame]]; 
[theImageView setImage:image]; 
[layoutOne addSubview:theImageView]; 

UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)]; 
[pinchRecognizer setDelegate:self]; 
[layoutOne addGestureRecognizer:pinchRecognizer]; 

UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)]; 
[rotationRecognizer setDelegate:self]; 
[layoutOne addGestureRecognizer:rotationRecognizer]; 

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)]; 
[panRecognizer setMinimumNumberOfTouches:1]; 
[panRecognizer setMaximumNumberOfTouches:1]; 
[panRecognizer setDelegate:self]; 
[layoutOne addGestureRecognizer:panRecognizer]; 


UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)]; 
[tapRecognizer setNumberOfTapsRequired:1]; 
[tapRecognizer setDelegate:self]; 
[layoutOne addGestureRecognizer:tapRecognizer]; 

[self.view addSubview:layoutOne]; 
} 

私はInterface Builderを使用してアプリケーションを作成していますが、最新バージョンのXcodeも使用しています。私はそれが助けになることを追加したいと思った。それはかもしれように聞こえるのおかげ

答えて

0

イメージビュー内でイメージを移動することはできません。できることは、フレームとしてUIViewを作成し、フレームの境界内で画像を移動することです。以下は、(iOS 5 with ARC)のコードスニペットです。

@implementation ImageFrame 
{ 
    UIImageView *imageView; 
    CGPoint previousPoint; 
} 

- (id)initWithFrame:(CGRect)frame andImage:(UIImage *)image 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     self.backgroundColor = [UIColor greenColor]; 
     self.clipsToBounds = YES; 
     imageView = [[UIImageView alloc] initWithImage:image]; 
    } 
    return self; 
} 

- (void)layoutSubviews 
{ 
    [self addSubview:imageView]; 
} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    previousPoint = [[touches anyObject] locationInView:self]; 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInView:self]; 
    CGPoint movePoint = CGPointMake(location.x - previousPoint.x, location.y - previousPoint.y); 
    CGPoint newCenter = CGPointMake(imageView.center.x + movePoint.x, imageView.center.y + movePoint.y); 
    imageView.center = newCenter; 
    previousPoint = location; 
} 

@end 
+0

ありがとう、私はそれを試してみましょう。あなたの助けに乾杯! – Ollie177

1

あなたの現在の設定がわからが、これは、あなたの質問に答えるCropping an UIImageへの回答をチェックしてみていない場合は、あなたのUIImageView確認clipsToBoundsプロパティがYES.

に設定されていることはありませ、同様の問題を記述する。

+0

お返事ありがとうございます。 ** [theImageView clipsToBounds:YES]; **意味論的な問題が発生しました:**インスタンスメソッド '-clipsToBounds:'が見つかりませんでした(戻り値の型のデフォルトto 'id')** – Ollie177

+0

theImageViewのようなサウンドは 'UIImageView'オブジェクトとして認識されません。オブジェクトを 'id'インスタンスとしてメソッドに渡しましたか?その場合は、正しいタイプ情報をコンパイラに提供してから、clipsToBound:メッセージを送信してください: '[(UIImageView *)theImageView clipsToBounds:YES]; ' –

+0

あなたが言ったことは正しいと思いますが、セットアップ。私は、UIImageViewを表示する方法を掲載し、うまくいけば、実際にそれを済ませたはずです。申し訳ありません。上記のコードを追加します – Ollie177

関連する問題