如何等到 uiimageview 在 objective c 中调整大小

how to wait till uiimageview resize in objective c

通常当我们向 UIImageView 添加一个大图像(这个图像视图是一个子视图)时,它需要整个 window 大小,因为 UIImageView 需要一些时间来调整图像视图的大小。我想获得最小调整时间(afterDelay时间)。

    self.capturedImgV.image =image;
    [self performSelector:@selector(resizeImageView) withObject:nil afterDelay:1];

以下文章讨论了缩放图像的不同方法,并介绍了缩放不同类型图像的时间安排。

http://nshipster.com/image-resizing/

重要的信息是进近之间的相对时间。 UIKit 似乎表现不错,所以最好不要担心并接受速度,因为它是给定的,除了自己在后台渲染较小的版本然后将视图设置为您的缩小版本之外,您可能对此几乎无能为力一口气改版。

一个想法是你可以提供 UIImageView 的子类并实现它的 drawRect: 方法来做计时,但它看起来像因为 UIImageView 被优化为直接绘制到绘制图像时不会调用此屏幕。

The UIImageView class is optimized to draw its images to the display. UIImageView does not call the drawRect: method of its subclasses. If your subclass needs to include custom drawing code, you should subclass the UIView class instead.

找到解决方案。

            dispatch_async(dispatch_get_main_queue(), ^{
                [self performSelector:@selector(resizeImageView) withObject:nil afterDelay:0];
                self.capturedImgV.contentMode = UIViewContentModeScaleAspectFit;
            });

我们可以调整 UIImageView 异步请求的大小。然后它将立即调整大小。