0

インターフェイス ビルダーを使用せずに複数のイメージを作成しました。私はこのコードを使用しました:

for (Row* row in parser.rows) {
        CGRect IphoneFrameImageRect;
        IphoneFrameImageRect = CGRectMake(10, 10, 150.0f, 150.0f);
        UIImageView *IphoneFrame = [[UIImageView alloc] initWithFrame:IphoneFrameImageRect];
        NSString *IphoneFrameurl = [NSString stringWithFormat:@"http://some.url.com/iphone/IphoneFrame.png"];
        [IphoneFrame setImage:[UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString:IphoneFrameurl]]]];
        [IphoneFrame setTag:(i)];
        IphoneFrame.opaque = YES; // explicitly opaque for performance

        [self.view addSubview:IphoneFrame];
        [IphoneFrame release];
}

これらの画像を横向きモードで別の場所に移動する必要があります。各画像にタグを付けましたが、このタグを使用して画像を選択できるようです。しかし、どうすれば画像に新しい座標を与えることができますか? 私はこのコードを持っています:

-(void)positionViews {
    UIInterfaceOrientation destOrientation = self.interfaceOrientation;

    int i=4; //Picture with tag=4 for example
    UIImage *tempImage=(UIImage *)[self.view viewWithTag:(i)];

    // HOW TO MOVE ??

}

このコードを使用してボタンでこれを行うことができます:

UIButton *tempButton=(UIButton *)[self.view viewWithTag:i];
[temp setFrame:CGRectMake(x, y, X10ButtonWidth, X10ButtonHeight)];
4

1 に答える 1

0

あなたは2つの異なるもの/クラスを混同しています:

  • UIImageメモリ内の画像データとそのピクセルを表す
  • UIImageView画面に画像を表示するためのビューを表します。

それがあなたにとってより明確であるならば、それUIImageUIImageViewNSStringのためのものであるかということですUILabel。データ/コンテンツを表すオブジェクトは、画面に表示できるビューとは異なります。

したがって、設定したタグを使用してimageviewを取得する場合は、特に重要なものではなく、ビューを取得します。UIImageViewUIImage


キャストをに変更すると、同じ方法でキャストUIImageViewを呼び出すことができsetFrame:ますUIButton(クラスsetFrame:のメソッドでありUIView、両方ともUIImageViewUIButtonサブクラスですUIView)。

UIImageView *tempImageView = (UIImageView *)[self.view viewWithTag:(i)];
[tempImageView setFrame:...];

viewWithTag:または、キャストを行わないでくださいUIView。フレームを変更するだけの場合は、これで十分です。基本的なビューでUIViewあるか、具体的には、プロパティUIImageViewを変更するだけの場合は、どのような種類のビューでもかまいません。frameこれはジェネリッククラスのプロパティであり、その特定のサブクラスが何であれ、UIView任意のに適用できるためです。UIViewUIView

UIView *tempImageView = [self.view viewWithTag:(i)];
[tempImageView setFrame:...];
于 2012-10-10T09:33:49.163 に答える