У меня проблемы с увеличением изображений в строках UITableView в Xamarin. iOS - PullRequest
0 голосов
/ 17 июня 2020

У меня есть tableView внутри tabView, и мои строки в tableView содержат изображения. Я хотел бы увеличить указанные изображения (я поместил их в scrollView и установил максимальное / минимальное масштабирование, и я установил ViewForZoomingInScrollView), но, похоже, я не могу запустить масштабирование, потому что это маленькие изображения 50x56 или некоторые другие жест / событие мешает. Я использую тот же код масштабирования в другой части своего приложения, и он отлично работает. Кто-нибудь сталкивался с такой же или подобной проблемой или знает возможное решение?

EDIT:

protected DocumentBaseCell()
        : base(UITableViewCellStyle.Default, new NSString("TableCell"))
    {

    ...

        documentImage = new UIImageView();
        documentImage.Image = UIImage.FromBundle("LaunchImage");
        documentImage.ContentMode = UIViewContentMode.ScaleAspectFit;
        documentImage.Layer.ZPosition = 0;

        imageScrollView = new UIScrollView();
        imageScrollView.ClipsToBounds = false;
        imageScrollView.ContentSize = new CGSize(50, 56);
        imageScrollView.MaximumZoomScale = 8f;
        imageScrollView.MinimumZoomScale = 1f;
        imageScrollView.Add(documentImage);
        imageScrollView.ViewForZoomingInScrollView += (UIScrollView sv) =>
        {
            imageScrollView.ContentSize = new CGSize(documentImage.Frame.Width, documentImage.Frame.Height);
            return documentImage;
        };

        imageScrollView.DidZoom += (object sender, EventArgs e) =>
        {
            //(sender as UIView).Layer.ZPosition = 2000;
        };

        imageScrollView.ZoomingEnded += (object sender, ZoomingEndedEventArgs e) =>
        {
            (sender as UIScrollView).SetZoomScale(0f, true);
            (sender as UIView).Layer.ZPosition = 0;
            this.Layer.ZPosition = 0;
        };
        ContentView.Add(imageScrollView);
    ...

    }

А это метод UpdateCell:

internal virtual void UpdateCell(DocumentModel doc, string sup, string 
 docType, string user, string date, UIImage image)
    {
        if (image != null) 
        {
            this.documentImage.Image = image;
        }
        ...
    }

The Frame также устанавливается:

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

        imageScrollView.Frame = new CGRect(0, 2, 50, 56);
        documentImage.Frame = new CGRect(0, 0, 50, 56);
    }

1 Ответ

0 голосов
/ 18 июня 2020

Я думаю, вы должны поставить frame на imageScrollView и documentImage, я загружаю официальный образец проекта tableView и добавляю туда ваш код, он хорошо масштабируется.

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

    imageScrollView.Frame = new CGRect(ContentView.Bounds.Width - 233, 5, 133, 133);
    headingLabel.Frame = new CGRect(5, 4, ContentView.Bounds.Width - 63, 25);
    subheadingLabel.Frame = new CGRect(100, 18, 100, 20);
    imageView.Frame = imageScrollView.Bounds;

}

enter image description here

Я загрузил образец проекта сюда , и вы можете его проверить.

...