public void TrackingStarted(object sender, TrackingEventArgs e) { var button = (ButtonView)sender; UIGraphics.BeginImageContext(button.Bounds.Size); button.Layer.RenderInContext(UIGraphics.GetCurrentContext()); UIImage image = UIGraphics.GetImageFromCurrentImageContext(); UIGraphics.EndImageContext(); if (trackingImageView == null) { trackingImageView = new UIImageView(CGRect.Empty); Superview.AddSubview(trackingImageView); trackingImageView.Alpha = 0.5f; } trackingImageView.Image = image; trackingImageView.SizeToFit(); CGRect frame = trackingImageView.Frame; var newFrame = new CGRect(Superview.ConvertPointFromView(button.Frame.Location, this), frame.Size); trackingImageView.Frame = newFrame; if (ButtonSelectedEvent != null) { ButtonSelectedEvent(button); } }
public void TrackingEnded(object sender, TrackingEventArgs e) { var button = (ButtonView)sender; ButtonFinishedEvent?.Invoke(button, trackingImageView, e.Touch); trackingImageView = null; }
public void TrackingContinued(object sender, TrackingEventArgs e) { var button = (ButtonView)sender; UITouch location = e.Touch; CGPoint point = location.LocationInView(Superview); CGRect frame = trackingImageView.Frame; var newPoint = new CGPoint(point.X - button.Frame.Size.Width / 2, point.Y - button.Frame.Size.Height / 2); var newFrame = new CGRect(newPoint, frame.Size); trackingImageView.Frame = newFrame; if (ButtonDraggedEvent != null) { ButtonDraggedEvent(button, location); } }