Wie kann ich den Zoom einer Inhaltsseite in Xamarin-Formularen aktivieren? Ist es möglich, es auf der gesamten Contentseite zu aktivieren? Oder ist es nur möglich, Bilder zu vergrößern?So aktivieren Sie das Vergrößern und Verkleinern einer Inhaltsseite in Xamarin-Formularen?
Antwort
auf den neuesten Funktionen von Xamarin.Forms ist Pinch-Geste in einem Content, hier ist die offizielle Seite:
https://developer.xamarin.com/guides/xamarin-forms/user-interface/gestures/pinch/
und für die gesamtes Projektbeispiel:
Hierhttps://github.com/xamarin/xamarin-forms-samples/tree/master/WorkingWithGestures/PinchGesture
ist ein Beispiel dafür, was man erreichen kann:
Sie können Gesten verwenden. Hier ein Beispiel: http://arteksoftware.com/gesture-recognizers-with-xamarin-forms/
Sie können versuchen, die Scale API auf der Seite Inhalt zu verwenden. Dies schien mir bei einer kleinen Test-App zu funktionieren.
public App()
{
// The root page of your application
var scaleUp = new Button {
Text = "Scale Up"
};
scaleUp.Clicked += (sender, e) => {
this.MainPage.Scale += 1;
};
var scaleDown = new Button {
Text = "Scale Down"
};
scaleDown.Clicked += (object sender, EventArgs e) => {
this.MainPage.Scale -= 1;
};
MainPage = new ContentPage {
Content = new StackLayout {
VerticalOptions = LayoutOptions.Center,
Children = {
scaleUp,
scaleDown
}
}
};
}
Versuchen Sie, diese Klasse, diese Lösung nicht bewegen, wenn Sie vergrößern oder verkleinern. Quelle hier: Source Code
public class PinchToZoomContainer : ContentView {
double currentScale = 1;
double startScale = 1;
double xOffset = 0;
double yOffset = 0;
public PinchToZoomContainer()
{
var pinchGesture = new PinchGestureRecognizer();
pinchGesture.PinchUpdated += OnPinchUpdated;
GestureRecognizers.Add (pinchGesture);
}
void OnPinchUpdated (object sender, PinchGestureUpdatedEventArgs e)
{
if (e.Status == GestureStatus.Started) {
// Store the current scale factor applied to the wrapped user interface element,
// and zero the components for the center point of the translate transform.
startScale = Content.Scale;
Content.AnchorX = 0;
Content.AnchorY = 0;
}
if (e.Status == GestureStatus.Running) {
// Calculate the scale factor to be applied.
currentScale += (e.Scale - 1) * startScale;
currentScale = Math.Max (1, currentScale);
// The ScaleOrigin is in relative coordinates to the wrapped user interface element,
// so get the X pixel coordinate.
double renderedX = Content.X + xOffset;
double deltaX = renderedX/Width;
double deltaWidth = Width/(Content.Width * startScale);
double originX = (e.ScaleOrigin.X - deltaX) * deltaWidth;
// The ScaleOrigin is in relative coordinates to the wrapped user interface element,
// so get the Y pixel coordinate.
double renderedY = Content.Y + yOffset;
double deltaY = renderedY/Height;
double deltaHeight = Height/(Content.Height * startScale);
double originY = (e.ScaleOrigin.Y - deltaY) * deltaHeight;
// Calculate the transformed element pixel coordinates.
double targetX = xOffset - (originX * Content.Width) * (currentScale - startScale);
double targetY = yOffset - (originY * Content.Height) * (currentScale - startScale);
// Apply translation based on the change in origin.
Content.TranslationX = targetX.Clamp (-Content.Width * (currentScale - 1), 0);
Content.TranslationY = targetY.Clamp (-Content.Height * (currentScale - 1), 0);
// Apply scale factor
Content.Scale = currentScale;
}
if (e.Status == GestureStatus.Completed) {
// Store the translation delta's of the wrapped user interface element.
xOffset = Content.TranslationX;
yOffset = Content.TranslationY;
}
}
}
Helper DoubleExtensions
public static class DoubleExtensions
{
public static double Clamp (this double self, double min, double max)
{
return Math.Min (max, Math.Max (self, min));
}
}
- 1. UIImageView Vergrößern und Verkleinern
- 2. So vergrößern und verkleinern Sie Bilder in WP7?
- 3. Kann vim vergrößern und verkleinern?
- 4. So vergrößern/verkleinern Sie aus einem komplexen Dreieck in Leinwand
- 5. Vergrößern/Verkleinern in OpenGL ES
- 6. Storyboard Vergrößern/Verkleinern Tastaturkürzel
- 7. iPhone sdk Vergrößern/Verkleinern
- 8. Bilder in Emacs. Vergrößern und verkleinern?
- 9. Vergrößern/Verkleinern einer Textansicht bei gedrückter Textansicht
- 10. In einer Tabellenansicht können wir den Effekt vergrößern und verkleinern?
- 11. Eclipse Fonts Verkleinern und Vergrößern Problem Ausgabe
- 12. GMSMapView animateToCameraPosition vergrößern - Animation verkleinern
- 13. JQuery Vergrößern/Verkleinern Verwandte Elemente
- 14. wie in uipageviewcontroller zu vergrößern oder verkleinern?
- 15. Wie ein Datetime Vergrößern/Verkleinern Mausrad machen
- 16. Skript vergrößern/verkleinern - Wie Standardschriftgröße hinzufügen?
- 17. Größenänderung (Vergrößern und Verkleinern) in Compact Framework (C#)
- 18. Vergrößern/Verkleinern von Ticks und Rasterlinien bei Ansicht Größe ändern
- 19. JQuery - Wie zum Vergrößern/Verkleinern der Breite?
- 20. Größe des Arrays dynamisch vergrößern/verkleinern
- 21. TMux vergrößern oder verkleinern, ohne Toggle
- 22. Mit dem Scrollrad zum Vergrößern/Verkleinern
- 23. Android - Wie kreisförmig vergrößern/verkleinern Sie einen Teil des Bildes?
- 24. Kinetic js ziehen, droppen, vergrößern, verkleinern und drehen Bild
- 25. So vergrößern Sie Xcode in einem Codefenster
- 26. HTML/CSS: Wie kann ich die Kontrollkästchen beim Vergrößern und beim Verkleinern verkleinern?
- 27. So verkleinern Sie die Bildgröße in 1MB
- 28. So vergrößern Sie den Abstand zwischen Absätzen in einer Textansicht
- 29. So aktivieren Sie das Textfeld Kontrollkästchen aktiviert
- 30. WPF So vergrößern Sie die Figur auf einer Leinwand
Wenn Sie die Tasten auf der Unterseite der Seite setzen, wird sie sich bewegen aus der Sicht, wie Sie die Ansicht vergrößern? –
@WilliamCorncobDecker Ich habe Bilder hinzugefügt, um zu zeigen, was es macht. –
Ich bin nur besorgt, dass dies in der Praxis keine machbare Option ist. Die meisten Leute wollen keine Buttons in der Mitte ihrer Layouts, sie würden sie am oberen oder unteren Bildschirmrand haben wollen. In diesen Fällen würden sich die Schaltflächen schnell aus dem sichtbaren Bereich bewegen. –