ios - 通过更新中心约束使用 pangesture 移动视图的中心
问题描述
我正在开发一个应用程序,用户可以用手指拖动视图并更改其中心点。
但是,如果我使用自动布局创建该拖动视图,我将面临一个问题。
目前,我正在以编程方式应用它的高度宽度和中心约束。
但是没有办法将中心约束更新到视图中的特定点。
这就是我对其 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;
}));
解决方案
尝试
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;
}
}
推荐阅读
- logging - 在 Wildfly 11 中,如何禁止创建 console.log 文件?
- c++ - 如何使用 Visual Studio 属性窗口更改控件定位?
- node.js - 基本 HTTP 身份验证(使用 Express 的 Node 本地主机除外)
- angular - 无法将空值分配给变量
- java - Netty readBytes 引用计数
- javascript - How to use JavaScript in PDF to discern a user's operating system
- python - 将格式应用于浮动时出错
- mysql - 如何使用模型在mysql中透视表
- android - 华为设备上的Camersource
- spring-boot - 每次更改静态资源时,如何停止在 Tomcat 服务器上运行的 Spring Boot 项目以自行重新部署?