مشخصات مقاله
حرکات مقیاس (Scale)، کشیدن (Pan) و چرخش (rotate) در Xamarin iOS
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
حرکات مقیاس (Scale)، کشیدن (Pan) و چرخش (rotate) در Xamarin iOS
در اکثر برنامه های iOS قابلیت مقیاس پذیری، کشیدن و چرخش وجود دارد. برای معرفی حرکات در برنامه از GestureRecognizer استفاده می شود. مبانی سه حرکتی که در ادامه به توضیح آن خواهیم پرداخت عبارتند از:
1. RotationGestureRecognizer
2. PinchGestureRecognizer
3. PanGestureRecognizer
اجازه دهید با انجام یک مثال از UIImage، تمام این حرکات را برای تصویر مورد نظر بکار ببریم.
RotationGestureRecognizer:
rotateGesture = new UIRotationGestureRecognizer((() =>
{
if ((rotateGesture.State == UIGestureRecognizerState.Began || rotateGesture.State == UIGestureRecognizerState.Changed) && (rotateGesture.NumberOfTouches == 2))
{
imageView.Transform = CGAffineTransform.MakeRotation(rotateGesture.Rotation + r);
}
else if (rotateGesture.State == UIGestureRecognizerState.Ended)
{
r += rotateGesture.Rotation;
}
}));
PinchGestureRecognizer:
pinchGesture = new UIPinchGestureRecognizer(() =>
{
if (pinchGesture.State == UIGestureRecognizerState.Began || pinchGesture.State == UIGestureRecognizerState.Changed)
{
pinchGesture.View.Transform *= CGAffineTransform.MakeScale(pinchGesture.Scale, pinchGesture.Scale);
pinchGesture.Scale = 1;
}
});
PanGestureRecognizer:
panGesture = new UIPanGestureRecognizer(() =>
{
if ((panGesture.State == UIGestureRecognizerState.Began || panGesture.State == UIGestureRecognizerState.Changed) && (panGesture.NumberOfTouches == 1))
{
var p0 = panGesture.LocationInView(View);
if (dx == 0)
dx = p0.X - imageView.Center.X;
if (dy == 0)
dy = p0.Y - imageView.Center.Y;
var p1 = new PointF(p0.X - dx, p0.Y - dy);
imageView.Center = p1;
}
else if (panGesture.State == UIGestureRecognizerState.Ended)
{
dx = 0;
dy = 0;
}
});
اضافه کردن حرکت به UIImage:
panGesture.MaximumNumberOfTouches = 2;
imageView.AddGestureRecognizer(panGesture);
imageView.AddGestureRecognizer(rotateGesture);
imageView.AddGestureRecognizer(pinchGesture);