2016-01-05 2 views
0

Я разрабатываю представление предупреждения, в котором я отображаю пользовательский вид, когда пользователь удаляет определенную кнопку. Я использую вид прокрутки для моего длинного представления содержимого. Я написал код так же, как указано ниже.Отображение подвью в центре экрана i телефона или ipad

Я хочу, чтобы это предупреждение отображалось прямо посередине экрана дисплея независимо от положения прокрутки или позиции содержимого, так как оповещение в iOS по умолчанию всплывает. Так что есть способ сделать это. Я пробовал путь, но не смог.

И единственным решением, которое я нашел, является прокрутка вверх до отображения и добавления подвью. И поскольку это не идеально, поэтому, пожалуйста, предложите некоторые меры или предложения. Благодарю.

@IBAction func forgotpassword(sender: AnyObject) 
     { 


        blurEffect = UIBlurEffect(style: .Dark) 
        blurEffectView = UIVisualEffectView(effect: blurEffect) 
        blurEffectView.frame = self.contentview.bounds 
        blurEffectView.autoresizingMask = [.FlexibleWidth,.FlexibleHeight] 



        self.AlertVieww.frame.size = CGSizeMake(blurEffectView.frame.width-40, self.AlertVieww.frame.height)//AlertVieww is the IBOutlet of my custom view in scene dock 

        AlertVieww.center = CGPointMake(UIScreen.mainScreen().bounds.size.width/2, UIScreen.mainScreen().bounds.size.height/2); 



        AlertVieww.autoresizingMask = [.FlexibleHeight,.FlexibleWidth] 

        blurEffectView.addSubview(self.AlertVieww) 




       [self.scrollview.setContentOffset(CGPointZero, animated: false)]//I scroll to the top 

      UIView.transitionWithView(self.view, duration: 1.0, options: UIViewAnimationOptions.TransitionFlipFromBottom, animations: 
       { 


       self.contentview.addSubview(self.blurEffectView) 

       }, completion: { finished in 



        self.scrollview.scrollEnabled = false 

      }) 




     } 
//These are two cnacel buttons in which I remove the views 
@IBAction func sendAlert(sender: AnyObject) 
    { 
     self.blurEffectView.hidden = true 
     self.scrollview.scrollEnabled = true 

    } 

    @IBAction func cancelAlert(sender: AnyObject) 
    { 
     self.blurEffectView.hidden = true 
     self.scrollview.scrollEnabled = true 

    } 
+0

U может показать его с помощью навигационной панели, если у вас есть, или, может быть, 'keyWindow' тоже – Tj3n

+0

Добавьте оповещение в окне. – Muneeba

+0

@Muneeba, добавляя subview в окне, делает мой автозапуск безумным в ландшафтном режиме. Мое предупреждение выглядит сжатым по сравнению с позицией subviews моего предупреждения. –

ответ

0

UIView * subview = ваш взгляд, чтобы быть центрированным в его SuperView;

UIView *superView = subview.superview; 

subview.center = [superView convertPoint:superView.center 
           fromView:superView.superview]; 

Если view is nil (on fromView :), этот метод вместо этого преобразует из базовых координат окна. В противном случае оба представления и приемник должны принадлежать одному и тому же объекту UIWindow.

ПРИМЕЧАНИЕ. Если вы используете материал автоматического макета, вам необходимо изменить ограничения. не кадр или центр

+0

У меня просто есть представление, которое мне нужно отображать в центре экрана. Автопоезд не должен быть помехой. –

1

попробовать с этим добавить оповещения представления в представлении TOPMOST контроллера вместо blurEffectView и установить центр alertview IsEqual до центра зрения TOPMOST контроллера в

как,

AlertVieww.center = UIApplication.sharedApplication().keyWindow?.rootViewController?.view.center 
UIApplication.sharedApplication().keyWindow?.rootViewController?.view.addSubview(self.AlertVieww) 
+0

Извините, это сделало мою кнопку отмены и отправки на моем предупреждении, чтобы не работать. Пожалуйста, см. Мой отредактированный вопрос о функциональности 2 кнопок –

+0

, не работающий с точки зрения IBAction, не вызывается, а затем метод внутри функций IBAction не работает? – jay

+0

Итак, что можно сделать для этого. Потому что мой текущий код работает очень хорошо, но единственной проблемой является центрирование. –

0

Здесь решение

Вместо self.view.frame.size.width

Использование :: [UIScreen ма inScreen] .bounds.size.width или высота

Так код

UIView * Посмотреть = [[UIView Alloc] инициализации]; View.frame = CGRectMake ([UIScreen mainScreen] .bounds.size.width/2, [UIScreen mainScreen] .bounds.size.height/2, 18, 36); [self.view addSubview: View];

+0

Nopes не работает. –

0

здесь попробовать это один и сделать CGPoint и по вашей основной вид:

view.center = CGPointMake (self.view.frame.size.width/2,

          self.view.frame.size.height/2); 
+0

Я пробовал это, но все еще не удалось –

0

попробовать это ! один ... self.view.center = CGPointMake (CGRectGetMidX (self.parentView.bounds), CGRectGetMidY (self.parentView.bounds));

+0

Нет, он тоже не работает. –

0

удалить этот код

   AlertVieww.center = CGPointMake(UIScreen.mainScreen().bounds.size.width/2, UIScreen.mainScreen().bounds.size.height/2); 

Добавьте этот код

AlertVieww.center = self.blurEffectView.центр

после

  self.contentview.addSubview(self.blurEffectView) 
0

Один из способов создать свой собственный AlertController (наследует от UIViewController) и в его xib, поставить все виды для вашего оповещения наряду с надлежащим ограничением будет правильно отображаться на iPhone/iPad и всякий раз, когда вам нужно показать, просто представьте его на window, как показано ниже.

[window.rootViewController presentViewController:yourAlertControllerInstance animated:YES completion:nil]; 

ИЛИ

Вы можете использовать этот custom alert. Он имеет разнообразный стиль наряду с BlurView в фоновом режиме, и вы можете настроить его в соответствии с вашими потребностями.

+0

Он загружает контроллер вида на весь экран, но я хочу, чтобы он был загружен с определенным размером с эффектом размытия в фоновом режиме и отменил/отклонил его при нажатии кнопки. –

+0

Установите эту ссылку, как для представленияViewcontroller с прозрачным фоном. http://stackoverflow.com/questions/12741224/ios-modal-viewcontroller-with-transparent-background. Или используйте оповещение третьей стороны, которое упростит ситуацию. Если эта библиотека удовлетворит ваши потребности, не изобретайте колесо. – Muneeba

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