【问题标题】:Image being stretched图片被拉伸
【发布时间】:2012-05-09 16:39:12
【问题描述】:

我有一张图片(从我们的服务器获取)我想放入 UIImageView。图像为 373x500。 UIImageView 是 443x290 并且视图正在拉伸它。

UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 
                                                                         0, 
                                                                         500, 
                                                                         300)];

myImageView.image = [UIImage imageWithData:photoData];
myImageView.backgroundColor = [UIColor viewBackgroundColor];
myImageView.contentMode = UIViewContentModeScaleAspectFit;

NSLog(@"myImageView.image.size: %@", NSStringFromCGSize(myImageView.image.size));
NSLog(@"myImageView.frame.size: %@", NSStringFromCGSize(myImageView.frame.size));

[wrapperView addSubview:myImageView];

日志读取:

2012-05-09 11:32:52.621[89145:1a303] myImageView.image.size: {373, 500}
2012-05-09 11:32:52.622[89145:1a303] myImageView.frame.size: {443, 290}

看起来像:

“UIViewContentModeScaleAspectFit”不应该告诉它保持比例而不是拉伸图像吗?

【问题讨论】:

  • 现在也有同样的问题,之前的 contentMode 从来没有出现过问题:S

标签: objective-c ios uiimageview


【解决方案1】:

您也应该在视图上设置clipsToBounds = YES

【讨论】:

    【解决方案2】:

    UIViewContentModeScaleAspectFit缩放图像(顾名思义)以适合您视图的纵横比。如果您不希望它缩放图像,请使用UIViewContentModeCenter,它只会将图像以其原始大小放置在视图的中心。

    【讨论】:

    • imageView.contentMode = UIViewContentModeScaleAspectFit;
    • 这不是真的,至少目前不是,或者至少你所暗示的似乎是不真实的。图像被缩放,但原始图像的纵横比保持不变。根据文档“通过保持纵横比来缩放内容以适应视图大小的选项。视图边界的任何剩余区域都是透明的”
    【解决方案3】:

    为我解决这个问题的是在设置框架之前设置内容模式...

    UIImageView *imageView = [UIImageView new];
    imageView.myImage;
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    imageView.frame = CGRectMake(...);
    [self.view addSubiew:imageView];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      相关资源
      最近更新 更多