Подтвердить что ты не робот

Почему мой UIView subview не является рендерингом внутри родителя? (код прилагается)

Почему мой пользовательский UIView не отображается в контейнере UIView его родительского? Итак, у меня есть:

  • MainViewController - имеет UIView "customViewContainer" (который не занимает весь экран) и
  • CustomView - это UIView с XIB файлом - здесь UIView здесь, когда он визуализируется (с AspectFit), выполняется за пределами родительского "customViewContainer"

Код, используемый для настройки пользовательского представления, - это извлечение из MainViewController:

< < cut - см. Update2 ниже →

Итак, я не понимаю, почему представление CustomView обрабатывается способом, большим по площади, чем родительский customViewContainer? Я хочу, чтобы CustomView вписывался в родительский "customViewContainer" полностью за подход типа AspectFit.

спасибо

РЕДАКТИРОВАТЬ 1 (добавлено пояснение). Если я "подхватывает субвью" в родительском представлении, тогда он делает клип, но мне действительно нужно отобразить пользовательский вид в родительской области просмотра ( не вся область экрана). Поэтому мне нужно (а), чтобы центр пользовательского представления находился в центре родительского представления, и (б) пользовательское представление AspectFit в родительском представлении должным образом. Любые идеи?

РЕДАКТИРОВАТЬ 2 - Обновить

извините - сделана ошибка копирования/вставки с кодом в исходном вопросе - похоже, не может ее редактировать, поэтому я поставлю правильную версию ниже - так уточнить:

MainViewController - имеет UIView "containerView" (который не занимает весь экран), а CustomView - это UIView с XIB файлом - это UIView здесь, когда он отображается (с помощью AspectFit), выполняется рендеринг вне границ родительского "containerView"

С приведенным ниже кодом это имеет смысл сейчас? Причина для этого кода: у меня есть пользовательский UIView, НО У меня есть связанный с ним файл XIB, так что это был единственный способ получить представление MainController, чтобы иметь возможность его использовать. То есть, вид контейнера в MainController view, а затем программно добавить CustomView в представление контейнера.

Re "Таким образом, установите рамку или центр представления, который вы добавляете, чтобы быть тем, кем вы хотите его видеть" - вы говорите, что мне нужно программно/вручную установить размер CustomView как то, что я хочу ( в отношении родительского контейнераView)?

То, что я надеялся, было каким-то образом, используя параметр декларативного макета для некоторых, как можно сказать "Загрузить пользовательский вид из этого XIB файла, а aspectFit это представление в self.containerView", однако я стараясь задаться вопросом, возможно ли это?

UPDATED CODE BELOW (ошибка в исходном вопросе, когда я копировал/вставлял его и менял имена переменных и т.д.)

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Load the custom Altimeter View into this UIControllerView 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];
}
4b9b3361

Ответ 1

Проверьте, проверено ли свойство родительского элемента "Clip subviews" в файле IB.

Clip Subviews

Я думаю, что эквивалентный код self.view.clipsToBounds = YES.

если это NO, subviews, который рисует снаружи, будет виден, как если бы он был нарисован на родительском объекте.