0

UIImageView のカスタム サブクラスを使用していますが、表示されない理由がわかりません。

The relevant code from my UIImageView subclass:
-(id) initWithImage:(UIImage*)image{
    if(self = [super initWithImage:image]){

    }
    return self;
}

そして、サブクラスを表示するビューのビュー コントローラーから:

UIImage *zoomRatateSliderHorizontal = 
       [[UIImage imageNamed:@"ZoomRotate Slider Horizontal.png"]
      stretchableImageWithLeftCapWidth:(75.0)/2-1.0  topCapHeight:0]; 
scaleHorizontalControl = [[ViewTransformationController alloc] 
                     initWithImage:zoomRatateSliderHorizontal];
scaleHorizontalControl.onScreenFrame = CGRectMake(0.0, 5.0,  
                                   self.view.frame.size.width, 
                                   scaleHorizontalControl.image.size.height);
scaleHorizontalControl.frame = scaleHorizontalControl.onScreenFrame;
scaleHorizontalControl.offScreenFrame = CGRectZero;
[self.view addSubview:scaleHorizontalControl];

サブクラス化する前は、View Controller で次のことを問題なく実行できました。

UIImage *zoomRatateSliderVertical = 
                    [[UIImage imageNamed:@"ZoomRotate Slider Vertical.png"]
                    stretchableImageWithLeftCapWidth:0  topCapHeight:(75.0)/2-1.0]; 
scaleOrRatateViewVertical = [[UIImageView alloc] 
                             initWithImage:zoomRatateSliderVertical];
scaleOrRatateViewVertical.frame = CGRectMake(-zoomRatateSliderVertical.size.width,
                                  zoomRatateSliderHorizontal.size.height+5.0+5.0, 
                                  zoomRatateSliderVertical.size.width, 
                           465.0 - zoomRatateSliderHorizontal.size.height-10.0-5.0);
[self.view addSubview:scaleOrRatateViewVertical];

ブレークポイントを使用して、クラスに渡されるフレームと画像を確認しましたが、どちらも有効で望ましいように見えます。

私が間違っていることについてのアドバイスをいただければ幸いです。

4

1 に答える 1

4

Apple ドキュメントには次のように書かれています。

UIImageView クラスは、その画像をディスプレイに描画するように最適化されています。UIImageView は drawRect: サブクラスを呼び出しません。サブクラスにカスタム描画コードが必要な場合は、UIView を基本クラスとして使用することをお勧めします。

だから私は UIView をサブクラス化し、そこから作業します。

于 2009-07-27T02:18:36.610 に答える