インターネットの周りで、画像を引き伸ばして UIView を埋めるための次のコードに出くわしました。
UIGraphicsBeginImageContext(self.view.frame.size);
[[UIImage imageNamed:@"image.png"] drawInRect:self.view.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor = [UIColor colorWithPatternImage:image];
これはすべて順調です。initWithCoder:
しかし、サブビューとして使用されているカスタム UIView クラスで機能するようにコードを転用し、次のコードを(ビューがストーリーボードに追加されているため)次のように挿入すると思いました。
- (id)initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
if (self) {
UIGraphicsBeginImageContext(self.frame.size);
[[UIImage imageNamed:@"image.png"] drawInRect:self.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.backgroundColor = [UIColor colorWithPatternImage:image];
}
return self;
}
「self.view」を単に「self」に変更したのは、このコードがビュー コントローラーではなくビュー自体によって呼び出されていることを反映していることに注意してください。最初のコード サンプルはうまく機能し、ビューを大きく埋め尽くします。2番目は(ビューコントローラー ala に入れても)そうではなく、 frameとbounds をself.subView.frame.size
正しく理解していないためだと感じています。誰かが私に簡単なクラッシュコースを教えてくれますか、または(私がベースから離れている場合)実際に何が間違っているのかを指摘できますか?
編集:今、私は本当に混乱しています。NSLog を使用して、次の情報を収集しました。
self.view.bounds.size.width: 768
self.subView.bounds.size.width: 0
...は??フレームも同様です。でも...そこにあります、寸法があります...