0

スーパービューに複数のビューがあります。他のビューを重ねたり触れたりせずにuiimageviewをドラッグするにはどうすればよいですか。どんな助けでも大歓迎です。

4

1 に答える 1

1

私は同様のタイプのものを実装しました。ここにコードスニペットを投稿しています。Draggable は、画像を含む他のクラスにインポートする必要があるクラスです。

1) Draggable.h

#import <UIKit/UIKit.h>

@interface Draggable : UIImageView
{
    CGPoint startLocation;
}
@end

2) Draggable.m

#import "Draggable.h"

@implementation Draggable

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
    // Retrieve the touch point
    CGPoint pt = [[touches anyObject] locationInView:self];
    startLocation = pt;
    [[self superview] bringSubviewToFront:self];
}
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {
    // Move relative to the original touch point
    CGPoint pt = [[touches anyObject] locationInView:self];
    CGRect frame = [self frame];
    frame.origin.x += pt.x - startLocation.x;
    frame.origin.y += pt.y - startLocation.y;
    [self setFrame:frame];
}

@end

3) ProfilePicViewController.m - 画像を含む私のクラス

#import "Draggable.h"

UIImageView *dragger;

-(void)viewWillAppear:(BOOL)animated
{
    UIImage *tmpImage = [UIImage imageNamed:@"icon.png"];

    CGRect cellRectangle;
    cellRectangle = CGRectMake(0,0,tmpImage.size.width ,tmpImage.size.height );
    dragger = [[Draggable alloc] initWithFrame:cellRectangle];
    [dragger setImage:tmpImage];
    [dragger setUserInteractionEnabled:YES];

    [self.view addSubview:dragger];

}

ここで、「ドラッガー」を他の画像にドラッグできます。適切な画像サイズであることを確認してください。icon.png のサイズは 48X48 です。そのため、画面に収まる画像サイズを用意してください。

これが少し役立つことを願っています。

于 2013-02-01T12:03:01.687 に答える