2011-07-16 17 views
17

私のカスタムUIViewは、親の容器UIView内にレンダリングされません。なぜ私のUIViewサブビューは親内でレンダリングされませんか? (コードが添付されています)

  • MainViewController - (画面全体を占有しません)UIViewcustomViewContainer」、および
  • を持っているのCustomView - XIBファイルとUIViewである - それはUIView次のとおりです。だから私が持っているものがあります

    :ここではそれは(AspectFitで)レンダリングされるときに、親の境界の外側にレンダリングされていることを「customViewContainerは」

セットアップするために使用されるコードは、カスタムビューはMainViewControllerから、この抽出物であります

< <カット - アップデート2を参照してください以下>>

CustomViewビューが親customViewContainerよりも面積が大きい方法でレンダリングされている理由だから私が見ることができませんか?私が望むのは、customviewが、AspectFitタイプのアプローチごとに親「customViewContainer」に完全に収まることです。

おかげ

EDIT 1(追加明確化) - 親ビューでI「クリップサブビューは、」それは、物事をクリップんが、私は本当に親ビューエリア内のカスタムビューをレンダリングするために必要なものならば(画面の全領域ではありません)。だから私は、(a)親ビューの中心にあるカスタムビューの中心と、(b)親ビューへのAspectFitへのカスタムビューを適切にする必要があります。何か案は?

EDIT 2 - 申し訳ありません

を更新 - 元の質問にコードをコピー/ペーストミスを犯した - ので、私は以下の正しいバージョンを出してあげる、それを編集することができないよう - ので、明確にします:

MainViewController - (画面全体を占有しません)UIViewcontainerView」を持っている、とCustomView - XIBファイルとUIViewである - それは(AspectFitで)レンダリングされたときにことをここUIViewです親の範囲外でレンダリングする "containerView "

以下のコードでこれは意味をなさないでしょうか?このコードの理由は、UIViewというカスタムを持っていますが、XIBファイルが関連付けられているため、MainControllerビューを使用できる唯一の方法でした。つまり、MainControllerviewにコンテナビューを表示し、プログラムでコンテナビューにCustomViewを追加します。

Re:「フレームビューまたはビューの中心を設定したいものにする」 - 私がプログラムビュー/手動でカスタムビューの寸法を設定する必要があると言っていますか? (親コンテナビューとの関係で)?

宣言的なレイアウト設定を使用して「カスタムビューをXIBファイルからロードし、aspectFitからこのビューをself.containerViewにロードする」と言うことができる方法がありましたが、これが可能かどうか疑問に思うのですか?IBファイルの親の「クリップサブビュー」プロパティがチェックされている場合

は、以下のコード(元の質問でのミス私は/にそれを貼り付けや変数名などを変更コピー)

- (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]; 
} 

答えて

24

チェックを更新しました。

Clip Subviews

私は同等のコードがself.view.clipsToBounds = YESだと思います。

NOの場合、外側に描画するサブビューは、親に描画されているかのように表示されます。

+0

ありがとうございます - 問題は私が "クリップのサブビュー"をクリップする場合ですが、実際には親ビュー領域(画面の全領域ではありません)内にカスタムビューをレンダリングする必要があります。だから私は、(a)親ビューの中心にあるカスタムビューの中心と、(b)親ビューへのAspectFitへのカスタムビューを適切にする必要があります。何か案は? – Greg

+0

もう少し具体的になりますか?私はあなたがここで何を意味するのか分からなかった。 self.view.center = self.parentView.centerはビューを中央に配置する必要があります。 AspectFitでは、組み込みのプロパティがあるかどうかはわかりません。私が間違っていない場合、それはUIImageViewのために利用可能です – Mugunth

+0

永続化のおかげで - 私はメインの質問で私のEDIT2でより多くを更新/明確化しました – Greg

関連する問題