Я пытаюсь создать настраиваемый alertView, но у меня возникла проблема с размером Alert , так что мой вопрос: Как я могу узнать положение X левого угла и положение x в правом углу?Swift - IOS: UIalertController position
ответ
Вы можете получить х позиции что-то подобное,
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);
на самом деле он тоже не работает, я знаю, что мой рост равен 200, однако, когда я использую Y, вывод равен 0, что означает, что предупреждение и viewController имеют одинаковую высоту, что не верно – Anthony
Вы используете автозапуск? – Lion
Есть ли способ установить ширину предупреждения? – Anthony
Вы можете получить доступ к свойствам на рамке представления. alertView.frame.minX
поможет вам левый угол X и alertView.frame.maxX
получите вам правильный угол X.
Я пробовал это, но он всегда дает мне 0 и 375.0, однако если я сделаю то же самое для своего экрана, у меня будет тот же вывод (0 и 375.0), где очень ясно, что ширина alertView меньше, чем на экране – Anthony
. используя AutoLayout? –
Я использую эти 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
'centerInSuperView.x - myOwnWidth/2,0, centerInSuperView.y - myOwnHeight/2.0', или что-то подобное, поэтому правый край координата будет' centerInSuperView.x + myOwnWidth/2.0' или 'myOwnOrigin.x + myOwnWidth' или что-то в этом роде. – holex