2013-03-26 3 views
0

У меня есть страница в приложении iOS, изложенная на следующей диаграмме, которая выглядит следующим образом.iOS программно изменяет макет uiview

  • Темно-серый ящик = Navbar
  • Светло-серый квадрат = UIView (для презентации, с некоторыми хорошо DropShadow и т.д.)
  • Черная граница = UIView (опять же, с хорошей тени, разные цвета фона и т.д.)
  • 2 текстовые поля
  • Pink box = другой вид для отображения после события.

layout

В настоящее время я выложив все с initWithFrame, и явно устанавливая рамки каждого элемента, который я знаю, это, вероятно, не велика (я новичок в разработке Иос, пожалуйста, указать меня в правильном направлении).

То, что я пытаюсь добиться, заключается в том, что, когда какой-то текст вводится во второе текстовое поле, открывается розовая рамка, и супервизоры правильно реагируют, а расположение красиво вокруг нового поля.

У меня нет проблем с самим событием, и я мог бы просто изменить рамку каждого UIView по очереди, но я чувствую, что это неправильно, и мне понравились бы некоторые указатели. В конце концов, мне также понравится розовая коробка, чтобы оживить ее, и поэтому содержащиеся в ней взгляды оживляют ее.

Надеюсь, я полностью объяснил себя. Большое спасибо

+1

Вы читаете [Просмотр руководства по программированию для iOS] (http://developer.apple.com/library/ios/#documentation/windowsviews/conceptual/viewpg_iphoneos/CreatingViews/CreatingViews.html)? Новым подходом является «Обработка изменений макета автоматически с помощью авторезистирующих правил», а универсальный - «Настройка макета ваших представлений вручную». –

+0

вы должны реализовать layoutSubviews в вашем подклассе UIView и установить рамки представления – Felix

+0

Спасибо @ A-Live, этот документ действительно помог. Я отсортировал его с помощью autoresizesSubviews = YES! – Leon

ответ

0

Если у вас есть инициирование события, которое вы хотели бы запустить анимацию с обратной стороны, это довольно простая вещь.

- (void)myEventMethod:(id)sender { 
    // Do your event stuff here 
    // Animate the pink box into view 
    // The below assumes the pink box is hidden behind the blackView and you'd like to drop it down 44 pixels over 0.3 seconds - hopefully correct - haven't tested 
    // need to be careful as it'll move down 44px every time myEventMethod: is triggered 
    [UIView animateWithDuration:0.3 
         delay:0.0 
         options:UIViewAnimationOptionCurveEaseIn 
        animations:^{ 
        CGRect pinkboxEndFrame = CGRectMake(self.blackView.frame.origin.x, self.blackView.frame.origin.y + 44, self.pinkbox.frame.size.width, self.pinkbox.frame.size.height); 
        [self.pinkbox setFrame:pinkboxEndFrame]; 
        } 
        completion:nil]; 

} 

Просто обновите приведенное выше с помощью любых других анимаций, которые вы хотели бы сделать с другими видами.

Для получения дополнительной информации о анимационных представлениях вы можете проверить View Programming Guide от Apple.

Смежные вопросы