1

何週間も検索した結果、Github で自分のニーズに合った例を見つけました。トラッシュドラッグの例でした。必要に応じて例を編集しました。

私は今、1つだけ問題を抱えています。私のScrollviewには5つの画像がありますが、それらはすべて同じです。

各サムネイルを別の画像にする方法を知りたいので、画像を Scrollview から上部の Imageview にドラッグすると、スクロールビューからドラッグした画像に変わります。

基本的に、スクロールビューに異なる画像が必要です。私が持っているのと同じではありません。

もうすぐそこですが、戦いを完了するために必要な最後の 1 つのことで行き詰まってしまいました。

以下はサンプル画像と私のサンプルプロジェクトへのリンクです。

ありがとうございました。

MySampleProject

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

4

2 に答える 2

3

これは私がしたことです:

1。クラスの- initWithFrame:メソッドを次のように書き換えます。GalleryButton

- (id)initWithFrame:(CGRect)frame imageName:(NSString *)imgName
{
    self = [super initWithFrame:frame];
    if (self) {
        isInScrollview  = YES;

        CGRect myImageRect = CGRectMake(0, 0, 64, 64);
        images = [[UIImageView alloc] initWithFrame:myImageRect];

        // here's the change:
        // instead of a constant name, use the `imgName` parameter
        [images setImage:[UIImage imageNamed:imgName]];
        [self addSubview:images];

        self.backgroundColor = [UIColor blackColor];
        self.layer.borderWidth = 2;
        self.layer.borderColor = [UIColor blackColor].CGColor;
        self.layer.masksToBounds = YES;
        self.layer.cornerRadius = 5;
    }
    return self;
}

次に、クラスの- addAttachment:メソッドを次のように書き換えます。GalleryScrollView

- (void) addAttachment:(AttachmentItem *)attachment withImageNamed:(NSString *)imgName
{
    // everything stays the same (!), except this line:
    GalleryButton *btnAttachment = [[GalleryButton alloc] initWithFrame:CGRectMake(startX, startY, width, height)];
    // is to be extended to:
    GalleryButton *btnAttachment = [[GalleryButton alloc] initWithFrame:CGRectMake(startX, startY, width, height) imageName:imgName];
    ...
}

次に、 で- [HegakaDragAndDropRecycleBinViewController viewDidLoad]、使用するイメージのファイル名を指定します。

[self.gallery addAttachment:item withImageNamed:@"recyclebin"];
[self.gallery addAttachment:item withImageNamed:@"canadian-maple"];
[self.gallery addAttachment:item withImageNamed:@"light-cherry"];
[self.gallery addAttachment:item withImageNamed:@"mozambique-wenge"];
[self.gallery addAttachment:item withImageNamed:@"canadian-maple"];

結果:

ここに画像の説明を入力

于 2012-11-11T20:13:56.503 に答える
0

注: 将来的には、問題に特に関連すると思われるコードのスニペットを提供すると便利です。プロジェクト全体とあなたが直面している問題を投稿することは少し怠惰なものとして外れます。何を試しましたか?ここで質問する前に試したことのうち、うまくいかなかったものは何ですか?

GalleryButton.mクラスでは、initWithFrame:メソッドに次のコードがあります。

CGRect myImageRect = CGRectMake(0, 0, 64, 64);
images = [[UIImageView alloc] initWithFrame:myImageRect];
[images setImage:[UIImage imageNamed:@"light-cherry.png"]];
[self addSubview:images];

変数名imagesは実際には単一のUIImageViewであるため混乱しますが、これはボタンの画像が割り当てられている場所です。

解決策は次のいずれかになります。

  1. イニシャライザを変更して、に渡すことができるオブジェクトinitWithFrame:も受け入れるようにします。UIImageUIImageView
  2. GalleryButtonオブジェクトにを設定する、呼び出されたsetImage:(UIImage*)image、または同様のメソッドに新しいメソッドを追加しimageますUIImageView

正直なところ、ボタンの作成後にその画像を変更したくない場合を除いて、私は両方を実行します。その場合は、オプション1のみを実装する必要があります。

于 2012-11-11T20:09:17.080 に答える