irrtümlich nach oben. Ich habe einen ImageViewController, der eine ImageZoomView darstellt (die zZ noch nicht zoomt, aber bald). Wenn ich auf das Bild klicke, wird das gesamte Bild leicht nach oben verschoben. Dies sollte nicht passieren, das Bild sollte an seinem Platz bleiben, bis ein Benutzer wischt oder kneift.UIImageView bewegt sich beim Klicken auf
Der ImageViewController lebt in einem UIPageViewController, der das Wischen zwischen Ansichten ermöglicht. Das einzige Problem, das ich habe, ist mit dem ImageViewController (d. H. Der VideoViewController und PdfViewController funktionieren beide gut und nicht nach oben verschieben)
ImageZoomView ist ein UIScrollView mit einem UIImageView als Kind Kontrolle.
ImageZoomView:
public class ImageZoomView : UIScrollView
{
private UIImage _image;
private UIImageView _imageView;
public ImageZoomView()
{
_imageView = new UIImageView
{
ContentMode = UIViewContentMode.ScaleAspectFill
};
AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;
ClipsToBounds = true;
AddSubview(_imageView);
}
public int Index { get; set; }
public override void LayoutSubviews()
{
base.LayoutSubviews();
var imageWidth = Bounds.Width;
_imageView.Frame = new CGRect(
Bounds.Left, Bounds.Top,
imageWidth, imageWidth/_image.Size.Width * _image.Size.Height);
ContentSize = _imageView.Bounds.Size;
}
public void DisplayImage(UIImage image)
{
_image = image;
_imageView.Image = image;
}
}
ImageViewController:
public class ImageViewController : AssetViewController
{
private ImageZoomView _imageView;
public ImageViewController(int index, Media media) : base(index, media) { }
public override void ViewDidLayoutSubviews()
{
base.ViewDidLayoutSubviews();
_imageView.Frame = View.Bounds;
}
public override void LoadView()
{
_imageView = new ImageZoomView()
{
Index = Index,
BackgroundColor = UIColor.White,
};
_imageView.DisplayImage((_media as LocalMedia<UIImage>).Resource);
View = _imageView;
}
}
AssetViewController:
public abstract class AssetViewController : UIPageViewController
{
protected Media _media;
public AssetViewController(int index, Media media)
{
_media = media;
Index = index;
View.BackgroundColor = Globals.ColorDark;
}
public int Index { get; set; }
public Media CurrentMedia { get { return _media; } }
}
Haben Sie innen VideoViewController oder PdfViewController Ansichten, die von UIScrollView abgeleitet sind? –
@YuriS Nein, weder der VideoViewController noch der PdfViewController haben eine Abhängigkeit von der UIScrollView-Klasse. Beide Klassen stammen von UIViewController; Der PdfViewController verwendet im Grunde eine UIImageView, um das Dokument anzuzeigen (jedoch keine UIScrollView-Eltern) und der VideoViewController verwendet einen AVPlayer.Ich glaube, dass das Standardverhalten von UIScrollView der Schuldige dieses Problems ist, aber ich habe keine Ahnung, was ich tun muss, um das Problem zu beheben. – kformeck
Leider ist der AVPlayer nicht frei und ich kann das nicht reproduzieren. Kannst du den Code vereinfachen, um das gleiche Problem aber ohne AVPlayer zu zeigen? Auch der gesamte Projektquellcode würde helfen, genau zu reproduzieren, was Sie haben. Wenn ich anfange, mein Storyboard mit Controllern und Einschränkungen zu erstellen, die nicht mit dem übereinstimmen, was Sie haben. Irgendeine Chance, Quelle von Dropbox oder GitHub aber ohne AVPlayer zu bekommen? –