Переместить центр вида с помощью панорамирования, обновив ограничения центра - PullRequest
0 голосов
/ 11 июня 2019

Я работаю над приложением, в котором пользователь может перетащить вид пальцем и изменить его центральную точку.

Но у меня возникает проблема, если я создаю этот вид перетаскивания с автоматическим макетом.

В настоящее время я применяю его ширину по высоте и ограничения по центру программно.

Но нет способа обновить ограничение центра для конкретной точки в представлении.

Вот так я применяю ограничение центра относительно его SuperView.

    // Set center constraints
labelControl.CenterXAnchor.ConstraintEqualTo(this.CenterXAnchor).Active = true;
labelControl.CenterYAnchor.ConstraintEqualTo(this.CenterYAnchor).Active = true;


    // On Pangesture
this.AddGestureRecognizer(new UIPanGestureRecognizer((recognizer) =>
                {
                    CGPoint translation = recognizer.TranslationInView(recognizer.View.Superview);

                    CGPoint newCenter = new CGPoint(lastLocation.X + translation.X, lastLocation.Y + translation.Y);

                    //this.Center = newCenter; // This does not work as we have applied constraints.

                    CenterXConstraint.Constant = newCenter.X;
                    CenterYConstraint.Constant = newCenter.Y;
                }));

1 Ответ

0 голосов
/ 11 июня 2019

Попробуйте

NSLayoutConstraint[] list = this.Constraints;
foreach(NSLayoutConstraint c in list)
{
     if(c.FirstAttribute == NSLayoutAttribute.CenterX)
     {
          XConstraint.Constant = newCenter.X;                       
     }
     if (c.FirstAttribute == NSLayoutAttribute.CenterY)
     {
           YConstraint.Constant = newCenter.Y;
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...