カスタムが親UIView
のコンテナ内でレンダリングされないのはなぜですか? UIView
だから私が持っているものは次のとおりです:
- MainViewController -
UIView
"customViewContainer
" (画面全体を占有しない) を持ち、 - CustomView -
UIView
XIB ファイルを使用しUIView
ます。(AspectFit を使用して) レンダリングすると、親 "customViewContainer
"の境界外でレンダリングされます。
カスタム ビューのセットアップに使用されるコードは、MainViewController から抽出した次のコードです。
<< カット - 以下の Update2 を参照 >>
CustomView
だから、ビューが親よりも大きな領域でレンダリングされている理由がわかりませんcustomViewContainer
か? 私が望むのは、型アプローチごとに完全customview
に親 " " に収まるようにすることです。customViewContainer
AspectFit
ありがとう
EDIT 1(明確化を追加)-親ビューで「サブビューをクリップ」すると、クリップされますが、親ビュー領域(画面全体ではなく)内にカスタムビューをレンダリングするために本当に必要なもの。したがって、(a) カスタム ビューの中心を親ビューの中心に配置し、(b) カスタム ビューを親ビューに適切に AspectFit する必要があります。何か案は?
編集 2 - 更新
申し訳ありません-元の質問のコードでコピー/貼り付けの間違いを犯しました-編集できないようですので、以下に正しいバージョンを入れます-明確にするために:
MainViewController
- UIView
" containerView
" (画面全体を占有しない) を持ち、CustomView
- UIView
XIB ファイルを含む - ( を使用して) レンダリングされると、親 " "の境界外でレンダリングされるのはUIView
ここですAspectFit
containerView
以下のコードで、これは今意味がありますか? このコードの理由は、カスタム がありUIView
ますが、それに関連付けられた XIB ファイルがあるため、MainController
ビューを使用できるようにする唯一の方法でした。つまり、 にコンテナ ビューを用意しMainController
view
、プログラムで をコンテナ ビューに追加しCustomView
ます。
「追加するビューのフレームまたは中心を希望どおりに設定してください」について - CustomView のサイズをプログラムまたは手動で設定する必要があると言っていますか (関連して)親のcontainerView)?
私が望んでいたのは、宣言的なレイアウト設定を使用して、「XIBファイルからカスタムビューをロードし、このビューをself.containerViewにアスペクトフィットする」と言う方法があることでしたが、疑問に思い始めていますこれが可能であれば?
以下の更新コード(コピー/貼り付けして変数名などを変更したときに、元の質問に誤りがありました)
- (void)viewDidLoad
{
[super viewDidLoad];
// Load the custom Altimeter View into this UIControllerView's container UIView for it
NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:@"Customview" owner:self options:nil];
for (NSObject *obj in nibs) {
if ( [obj isKindOfClass:[Customview class]]) {
Customview *cv = (Customview*)obj;
[self.containerView addSubview:cv];
break;
}
}
// UI Layout
self.containerView.layer.borderWidth = 2;
self.containerView.layer.borderColor = [[UIColor redColor] CGColor];
}