Почему мой пользовательский UIView
не отображается в контейнере UIView
его родителя? Итак, что у меня есть:
- MainViewController - имеет
UIView
"customViewContainer
" (который не занимает весь экран) и
- CustomView - это
UIView
с файлом XIB - здесь UIView
здесь, когда он рендерится (с AspectFit), рендерит за пределами родительского элемента "customViewContainer
"
Код, используемый для настройки пользовательского представления, представляет собой этот фрагмент из MainViewController:
<< вырезать - см. Обновление2 ниже >>
Итак, я не понимаю, почему представление 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 равным тому, что я хочу ( по отношению к родительскому 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];
}