【问题标题】:ios - SizeToFit on UIImageView not workingios - UIImageView 上的 SizeToFit 不起作用
【发布时间】:2012-05-14 04:30:48
【问题描述】:

我有一个 UIImageView,它从 ios 文件系统的文档目录中加载图像。

问题是当我打电话时

[imageView sizeToFit];

它不起作用。我认为这是因为该图像尚未完全加载,因此在它具有图像宽度和高度之前调用了 sizeToFit 部分。

请有人指点我的修复方向。

这是我的代码:

imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.image = [UIImage imageWithContentsOfFile:[FileOperations getLibraryPath:[NSString stringWithFormat:@"%d.png", listData.imageId]]];
[imageView sizeToFit];
[imageScroll setContentOffset:CGPointMake(0, 0)];
imageScroll.contentSize = imageView.frame.size;
imageScroll.decelerationRate = UIScrollViewDecelerationRateFast;
imageScroll.minimumZoomScale = 1;
imageScroll.maximumZoomScale = 2;
[imageScroll setZoomScale:imageScroll.minimumZoomScale];
[imageScroll addSubview:imageView];

谢谢, 阿什利

【问题讨论】:

  • “它不起作用”到底是什么意思?是不是尺寸不对?
  • 您是否有理由不使用UIImageViewMode 值之一,例如“Aspect Fit”?
  • “它不起作用”是指它正在以 100% 的速度观看,并且图像比 iPhone 本身大得多。
  • @mbm30075 其实我是,但我搞砸了复制/粘贴。现在改变。
  • 当我阅读文档时,sizeToFit 并不是执行此操作的首选方式。另外,由于 contentMode 是在加载图像之前设置的,我认为它会在加载时自行调整大小。你检查过[comicViewer frame].size的值吗?

标签: ios uiimageview sizetofit


【解决方案1】:
UIImageView *myImage = [[UIImageView alloc]init];
myImage.contentMode = UIViewContentModeScaleAspectFit;
myImage.image = [UIImage imageName:@"image.png"];
[self.view addSubview:myImage];

【讨论】:

    【解决方案2】:

    检查图像大小:

    NSLog(@"%@", NSStringFromCGSize(imageView.image.size));
    

    您可能希望根据图像大小手动设置imageView 框架,例如,如果图像太大而无法容纳imageView 的超级视图。

    【讨论】:

    • 应该是NSStringFromCGSize(imageView.image.size)
    • 答案就是将 imageView 的 frame 设置为实际图像大小的一半。感谢 Costique 和 @AndreasLey
    【解决方案3】:

    sizeToFit 应该适用于您的情况,但如果 UIImage 为 nil 则会失败。

    UIImage 的imageWithContentsOfFile: 返回一个(完全加载的)对UIImagenil 的引用。你确定你走的是正确的道路吗?

    【讨论】:

      猜你喜欢
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      相关资源
      最近更新 更多