- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
有没有一种方法可以让我使用 ONLY Xamarin.Forms 控件进行捏合和缩放。
我想在 xamarin.forms(WebView 或图像或任何其他)的任何控件中显示图像,并能够从应用程序缩放。
最佳答案
截至本文发布时,还没有一种方法可以使用纯内置的 Forms 控件进行缩放。有一种方法可以实现这一点,但您必须为此实现原生渲染器。
我通过创建一个继承自 Xamarin.Forms.ContentView - PanGestureContainer 的类在我正在编写的应用程序中实现了这一点,该类具有触摸点最小/最大数量和要监听的事件等属性。
在 iOS 项目中,我为我的 View 制作了一个自定义渲染器,其中渲染器从 View 中获取属性并连接触摸事件监听器。
此外,我制作了一个可应用于其他 View 的可附加属性(又名行为),当应用它时,它从其父 View 中获取 View ,将其包装在 PanGestureRecognizer 中,另一个附加属性以相同的方式充当事件监听器包装器。
这是一个完整的 hack,但在 Xamarin 干净地实现它之前覆盖了缺失的功能
更新:现在有了示例代码,严重精简 因为发布太多,它应该让您了解如何实现这一点,而不是复制/粘贴解决方案。如果它看起来可能太多了,我相信有更好的方法,但它会起到作用,直到这个功能被内置。
public abstract class BaseInteractiveGestureRecognizer : BindableObject, IInteractiveGestureRecognizer
{
public static readonly BindableProperty CommandProperty = BindableProperty.Create<BaseInteractiveGestureRecognizer, ICommand> ((b) => b.Command, null, BindingMode.OneWay, null, null, null, null);
public ICommand Command {
get {
return (ICommand)base.GetValue (BaseInteractiveGestureRecognizer.CommandProperty);
}
set {
base.SetValue (BaseInteractiveGestureRecognizer.CommandProperty, value);
}
}
public object CommandParameter {get;set;} // make bindable as above
public GestureState State { get;set;} // make bindable as above
public View SourceView{ get; set; }
public void Send ()
{
if (Command != null && Command.CanExecute (this)) {
Command.Execute (this);
}
}
}
public class PanGesture : BaseInteractiveGestureRecognizer
{
public uint MinTouches { get;set; } // make bindable
public uint MaxTouches { get;set; } // make bindable
// add whatever other properties you need here - starting point, end point, touch count, current touch points etc.
}
然后在iOS项目中:
public abstract class BaseInteractiveGestureRenderer : BindableObject,IGestureCreator<UIView>
{
public abstract object Create (IInteractiveGestureRecognizer gesture, Element formsView, UIView nativeView);
public static GestureState FromUIGestureState (UIGestureRecognizerState state)
{
switch (state) {
case UIGestureRecognizerState.Possible:
return GestureState.Possible;
case UIGestureRecognizerState.Began:
return GestureState.Began;
case UIGestureRecognizerState.Changed:
return GestureState.Update;
case UIGestureRecognizerState.Ended:
return GestureState.Ended;
case UIGestureRecognizerState.Cancelled:
return GestureState.Cancelled;
case UIGestureRecognizerState.Failed:
return GestureState.Failed;
default:
return GestureState.Failed;
}
}
}
using StatementsHere;
[assembly: ExportGesture (typeof(PanGesture), typeof(PanGestureRenderer))]
namespace YourNamespaceHere.iOS
{
public class PanGestureRenderer : BaseInteractiveGestureRenderer
{
public PanGestureRenderer () : base ()
{
}
#region IGestureCreator implementation
public override object Create (IInteractiveGestureRecognizer gesture, Element formsView, UIView nativeView)
{
PanGesture panGesture = gesture as PanGesture;
nativeView.UserInteractionEnabled = true;
UIPanGestureRecognizer panGestureRecognizer = null;
panGestureRecognizer = new UIPanGestureRecognizer (() => panGesture.Send());
}
}
关于ios - Xamarin.forms 捏合和缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25577255/
我试图弄清楚为什么我的缩放在我的 OpenGL 相机上表现得很奇怪。它的目的是放大和缩小,但它的缩放非常随机。 这是我的代码: - (void)pinchDetected:(UIPinchGestur
我有一个带有 pdf 文件的 UIWebView。效果很好。但是我怎样才能启用pdf文件的缩放呢? 最佳答案 确保选中“缩放页面以适合” 关于pdf - 在 UIWebView 上启用缩放/捏合,我们
我使用 Ionic4 和 Angular8。 我想在智能手机上捏合/捏合屏幕。 我试过的以下说明已添加到 index.html。 但事与愿违,在真机上并没有运行。 我也试过了。 以下已添加到 . s
我有一个使用 canvas.drawLine 方法绘制图形的 onDraw 开发的运行图形库。在 onTouch 中,我实现了滚动功能。 现在我的客户想要缩放/捏合。是否可以在不重新绘制这些操作的情况
我被 UIScrollView 的问题困住了 我想在用户点击特定点时缩放 ScrollView ,并防止用户使用捏缩放手势放大/缩小,我该怎么做? [imgScroll setDelegate:sel
我的 map View 有一个 OnZoomListener,只要缩放比例发生变化,它就会被调用。这适用于底部的加号或减号按钮用于更改缩放比例的任何时候。但是,如果用户使用双指缩放来放大或缩小,则永远
我有一个 UITextView,可以在 UIImageView 中使用手势缩放、旋转和调整大小。当我缩放或调整它的大小然后输入一些文本时,文本容器会改变大小并且文本被截断。我尝试更改文本的大小以调整其
在 iPhone 上我只是这样做(而且它完美地工作): view.transform = CGAffineTransformRotate(transform, [(UIRotationGestureR
我已经从资源包中的 UIWebView 中加载了一个 PDF 文件。 现在,我无法缩放/收缩 PDF 文件。 我找到了以下 2 个相关链接,但没有一个答案被标记为正确 - How to zoom we
我正在做一个图像处理项目,我需要通过平移来拖动图像,通过旋转来旋转图像,通过捏合手势使图像变小和变大,最后通过双击禁用所有手势。如何实现这一目标,因为我对 Android 开发还很陌生。 提前致谢 最
我正在尝试将具有特定位置的 div(“childItem”)覆盖在具有背景图像的较大 div(“parentContainer”)之上。然后我使用 iscroll 允许在父 div 上捏合/缩放。这行
在 android 平板电脑上用谷歌浏览器打开的 html 页面上,我需要捕捉该用户已经做了一些放大(捏合)并在几秒钟后将其重置为默认值。 (缩小到默认屏幕大小。但我不想完全阻止缩放,我想允许它,但一
下面通过图文并茂的方式给大家分享下IOS手势操作(拖动、捏合、旋转、点按、长按、轻扫、自定义)的相关内容。 1、UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大
谁能指导如何在 Angular 2 RC2 中使用移动手势。 可能是这样的: 从API可以看出 HAMMER_GESTURE_CONFIG HammerGestureConfig 下 @angula
不久前我在一家帆船公司制作了一个 WordPress 网站,xssailing.com并且当前将视口(viewport)设置为: 该站点在计算机上运行良好,我可以在 iPhone/iPad 上进行缩
ios 七种手势操作 今天为大家介绍一下ios 的七种手势,手势在开发中经常用到,所以就简单 通俗易懂的说下, 话不多说,直接看代码: 1、uigesturerecognizer 介绍 手势识
目前我正在尝试创建某种图像查看器,您可以在其中单击图像,然后以全尺寸显示该图像。现在我想给它添加手势来缩放。我想了解并查看如何添加捏合手势来放大和缩小,以便能够在图像周围平移并使用双击手势快速放大。我
我正在尝试使 ImageView 像 Instagram 故事帖 subview 一样工作。我在 UIImageView 上添加了 UIPinchGestureRecognizer、UIPanGest
我是一名优秀的程序员,十分优秀!