【问题标题】:Zooming a UIScrollView in MonoTouch在 MonoTouch 中缩放 UIScrollView
【发布时间】:2011-02-16 00:40:14
【问题描述】:

我正在尝试使用 MonoTouch 中的 UIScrollView 实现缩放功能,但我似乎无法让它工作。

我看过一些关于设置委托的教程,但大部分都是在 Obj-C 中,我无法翻译成 C#。

基本上,我在 Interface Builder 中有一个 UIScrollView,它有一个 UIImageView 作为子视图。

我已将 UIScrollView 的 ContentSize 设置为图像的完整大小,并且还设置了最小/最大缩放比例。这是我的代码:

UIImage imgMap = new UIImage("img/map.png");
ivMap.Image = imgMap;
svMap.MinimumZoomScale = 1.0f;
svMap.MaximumZoomScale = 3.0f;
svMap.ContentSize = new System.Drawing.SizeF(ivMap.Frame.Width, ivMap.Frame.Height);

关于我缺少什么的任何想法?

编辑

我使用@Geoff 提供的代码创建了一个新的 .xib 文件,但仍然没有运气,图像只是滚动但仍然没有缩放。

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();

    UIScrollView sv = new UIScrollView (thisView.Frame);
    UIImageView iv = new UIImageView(UIImage.FromFile ("img/map.png"));

    sv.AddSubview (iv);
    sv.ContentSize = iv.Frame.Size;
    sv.MinimumZoomScale = 1.0f;
    sv.MaximumZoomScale = 3.0f;

    vwMineral.AddSubview(sv);
}

【问题讨论】:

    标签: c# iphone ios xamarin.ios


    【解决方案1】:

    试试:

    var sv = new UIScrollView (window.Frame);
    var iv = new UIImageView (UIImage.FromFile ("pat.jpg"));
    
    sv.AddSubview (iv);
    sv.ContentSize = iv.Frame.Size;
    sv.MinimumZoomScale = 1.0f;
    sv.MaximumZoomScale = 3.0f;
    sv.MultipleTouchEnabled = true;
    sv.ViewForZoomingInScrollView = delegate(UIScrollView scrollView) {
        return iv;
    };      
    
    window.AddSubview (sv);
    window.MakeKeyAndVisible ();
    

    【讨论】:

    • 感谢您的回答@Geoff,我刚刚使用您在上面提供的代码创建了一个新的 .xib 文件,我再次可以滚动图像但不能放大/缩小.我也尝试在 IB 中启用“多点触控”选项,但同样的事情 - 我只能滚动。附言图像尺寸很大,确切地说是1490x1320。如果您需要更多信息,请告诉我。
    • 哎呀,对不起,我已经用完整的解决方案更新了我的答案。
    • 就是这样,我只是错过了ViewForZoomingInScrollView 部分。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 2017-01-06
    • 2015-06-26
    相关资源
    最近更新 更多