У меня есть представление, кадры подвидов которого мне нужно динамически изменять в ответ на действия пользователя. Когда представление загружается, я инициализирую его подпредставления следующим образом:
if (self.firstSubview == nil) {
NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"FirstSubView" owner:self options:nil];
for (UIView *view in views) {
self.firstSubview = view;
}
}
а потом:
[self.view addSubview:self.firstSubview];
После инициализации, когда я хочу изменить кадр подвида, я делаю что-то вроде этого:
self.firstSubview.frame = CGRectMake(0, 80, self.firstSubview.frame.size.width, 200);
Что я хочу сделать, так это настроить координату Y подвида и его высоту, когда пользователь нажимает кнопку, и вернуть исходный кадр подвида, когда пользователь снова нажмет кнопку. Однако я обнаружил, что иногда это не работает, координата Y и высота, кажется, не всегда устанавливаются, как я говорю в функции CGRectMake
. Похоже, что функция не всегда принимает абсолютные значения, а вместо этого зависит от значений последнего кадра... Я имею в виду, похоже, что не всегда кадр принимает координату Y = 80 после вызова этой функции.
Возможно, я неправильно понимаю, как это работает: в файле представления nib
я установил верхнюю и нижнюю полосы в его Simulated Metrics
, поэтому высота представления должна быть оставшимся пространством между этими полосами, а координата (0,0) должна быть верхний левый угол под верхней панелью, верно? Есть что-то, что мне не хватает? Должен ли я повторно инициализировать и снова добавлять подвид каждый раз, когда я хочу изменить его кадр? Или есть что-то еще, что я должен сделать, чтобы применить изменения кадра?
заранее спасибо
nib
, в котором не установлены смоделированные показатели... - person AppsDev   schedule 20.05.2014