2016-10-06 8 views
1

Я пытаюсь создать настраиваемый alertView, но у меня возникла проблема с размером Alert , так что мой вопрос: Как я могу узнать положение X левого угла и положение x в правом углу?Swift - IOS: UIalertController position

+0

'centerInSuperView.x - myOwnWidth/2,0, centerInSuperView.y - myOwnHeight/2.0', или что-то подобное, поэтому правый край координата будет' centerInSuperView.x + myOwnWidth/2.0' или 'myOwnOrigin.x + myOwnWidth' или что-то в этом роде. – holex

ответ

0

Вы можете получить х позиции что-то подобное,

x = self.view.frame.size.width/2.0 - yourCustomAlertView.frame.size.width/ 2.0 

и то же самое для у также,

y = self.view.frame.size.height/2.0 - yourCustomAlertView.frame.size.height/ 2.0 

Обновление: (Как задал вопрос)

Вы можете добавить width constraint так же, как у вас есть adde d height constraint так что ваш код будет выглядеть,

var height:NSLayoutConstraint = NSLayoutConstraint(item: alertController.view, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 200); 

    var width : NSLayoutConstraint = NSLayoutConstraint(item: alertController.view, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 300); 

    alertController.view.addConstraint(height); 

    alertController.view.addConstraint(width); 
+0

на самом деле он тоже не работает, я знаю, что мой рост равен 200, однако, когда я использую Y, вывод равен 0, что означает, что предупреждение и viewController имеют одинаковую высоту, что не верно – Anthony

+0

Вы используете автозапуск? – Lion

+0

Есть ли способ установить ширину предупреждения? – Anthony

0

Вы можете получить доступ к свойствам на рамке представления. alertView.frame.minX поможет вам левый угол X и alertView.frame.maxX получите вам правильный угол X.

+0

Я пробовал это, но он всегда дает мне 0 и 375.0, однако если я сделаю то же самое для своего экрана, у меня будет тот же вывод (0 и 375.0), где очень ясно, что ширина alertView меньше, чем на экране – Anthony

+0

. используя AutoLayout? –

+0

Я использую эти 2 строки кодов var height: NSLayoutConstraint = NSLayoutConstraint (item: alertController.view, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, множитель: 1, константа: 200) ширина вар: NSLayoutConstraint = NSLayoutConstraint (пункт: alertController.view, атрибут: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: ноль, атрибут: NSLayoutAttribute.NotAnAttribute множитель: 1, константа: ViewController. view.frame.width * 0.4) – Anthony