#objective-c #cocoa-touch #uiview #uiscrollview #uialertview
#objective-c #cocoa-touch #uiview #uiscrollview #uialertview
Вопрос:
Я хотел бы использовать это же решение с моим UIView, чтобы получить тот же результат. У меня есть UIView с UIScrollView. Они встроены в UINavigationController.
Клиент добавляет товар в свою корзину, и я хотел бы отправить им сообщение с подтверждением. Прямо сейчас маленькая корзина UIBarButtonItem обновляет заголовок внутри, чтобы показать количество элементов. Это нормально, но не каждый пользователь / клиент это заметит.
Мне не очень нравится стиль UIAlertView для этой ситуации. Итак, я собираюсь добавить свой собственный UIView и оформить его так, как я хочу.
Я пытаюсь выяснить, как заставить UIView отображаться в центре окна. Независимо от того, использует ли клиент iPhone4 или iPhone5.
Код UIView:
UIView *confirmationPopup = [[UIView alloc] initWithFrame:CGRectMake(10, 200, 300, 100)];
[confirmationPopup setBackgroundColor:[UIColor redColor]];
// confirmationPopup.center = [confirmationPopup.superview convertPoint:confirmationPopup.superview.center fromView:confirmationPopup.superview.superview];
[[[self navigationController] view] addSubview:confirmationPopup];
Всплывающее окно автоматически центрируется по горизонтали, но не по вертикали. Я попытался поиграть со строкой, которую, как вы можете видеть, я закомментировал, но она не центрирует UIView в центре окна. Похоже, что он центрирует его внутри панели навигации
Был бы признателен за некоторые решения.
Комментарии:
1. Первая проблема с вашей логикой центрирования заключается в том, что она зависит от несуществующего супервизора.
Ответ №1:
Не используйте жесткий код; используйте автоматическую компоновку. Для этой цели вам может помочь мой пользовательский класс, имитирующий вид оповещения, который вы можете настроить по своему усмотрению. Он использует преимущества пользовательских переходов представления представления iOS 7. (Конечно, в iOS 8 будет еще больше поддержки для такого рода вещей, т.Е. UIPresentationController.)
Комментарии:
1. Отлично работает. Допустим, я хотел использовать другой пользовательский стиль. Как мне это сделать? Если я отредактирую один файл xib, то этот новый стиль будет использоваться для всех экземпляров.
2. Правильно, вы бы использовали другую пару class / .xib для каждого «стиля». Это ничем не отличается от того, как сейчас работает любой другой представленный контроллер представления. В этом весь смысл. Это превращает ваш представленный контроллер представления в объект, выглядящий как предупреждение. Просто абстрагируйтесь от пользовательского кода перехода (т. Е. Объедините Все
UIViewControllerTransitioningDelegate, UIViewControllerAnimatedTransitioning
материалы в другой объект, который вы можете создать по мере необходимости).3. Как я уже говорил ранее, в iOS 8 эта абстракция будет еще проще, потому что вы сможете повторно использовать свой UIPresentationController — фактически, в iOS 8 именно так работает UIAlertView (в этом я опередил свое время).