伸縮性を持たUIImageView
せたいイメージがあります。それを達成するために、私はで次のことを行いますviewDidLoad
:
-(void) buildResizableDescriptionAreaBackground
{
UIImage *image = [UIImage imageNamed:@"description_area_background"];
CGFloat top = ceilf(image.size.height / 2.0) - 1;
CGFloat bottom = floorf(image.size.height / 2.0);
CGFloat left = ceilf(image.size.height / 2.0) - 1;
CGFloat right = floorf(image.size.height / 2.0);
if ([image respondsToSelector:@selector(resizableImageWithCapInsets:)])
{
image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right)];
}
else
{
image = [image stretchableImageWithLeftCapWidth:left topCapHeight:top];
}
[self.descriptionAreaBackgroundImage setImage:image];
[self.descriptionAreaBackgroundImage setHighlightedImage:image];
}
これをデバッグするときdescriptionAreaBackgroundImage
は、nil ではなく、非表示ではなく、alpha = 1 で、正しいフレームであることを確認します。また、画像が nil でないこと、適切なサイズであること、サイズ変更可能な画像も nil でないことを確認します。それでも、画像はUIImageViewに設定されていません。
これを行うと、viewDidAppear:
すべて正常に動作します。通常の画像を設定すると(でも伸縮できませんviewDidLoad
)、すべて正常に動作します。
私の知る限り、スーパービューやウィンドウを必要としないセットアップは で実行できますがviewDidLoad
、なぜ機能しないのですか?