UIImageView自动resize

我想设置一个图像到UITableViewSimpleTableCellUIImageView 。 我已经改变了imageview的大小,但每当我尝试设置图像,它会自动调整自己。 我试图使用这里的代码来调整图像的大小,并设置它。 但它只适用于将图像尺寸设置为(20×20),这是UIImageView (40×40)大小的一半。 所以变得模糊了。 我也尝试设置UIAspectRatioFit/UIAspectratioFillclipsToBounds = YES 。 似乎没有任何工作。

另一个奇怪的部分是,当我使用从web直接下载的图像时, imageView不会自动resize,如下所示:

 - (void)connectionDidFinishLoading:(NSURLConnection *)connection { UIImage *userImage = [UIImage imageWithData:userImageData scale:self.profileImage.frame.size.height/self.profileImage.frame.size.width]; UITableViewCell *cell = [self.myTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; cell.imageView.image = userImage; } 

但是,然后我把这个图像存储到文档目录,然后尝试重新加载在其他地方,resize发生。 任何解决scheme

你的SimpleTableCell是你创build的UITableViewCell一个子类? 这imageView是这个子类的属性?

只是一个猜测:

每个UITableViewCell都有一个内置的imageView只读属性。 在你发布的代码中,你正在使用这个默认属性,我相信它不能修改它的框架,它是在单元格的左边修复的。

在文档中查找imageView属性: https : //developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/index.html#//apple_ref/occ/instp/UITableViewCell/imageView

所以,如果你有你自己的imageView的自定义单元格,一定不要叫它imageView ,因为你可能会使用默认的UITableViewCell的属性,而不是你自己的,它将拥有所有的框架定制等。

您应该通过您的customClass引用您的单元格,并像这样调用您的属性:

 - (void)connectionDidFinishLoading:(NSURLConnection *)connection { UIImage *userImage = [UIImage imageWithData:userImageData scale:self.profileImage.frame.size.height/self.profileImage.frame.size.width]; SimpleTableCell *cell = (SimpleTableCell*)[self.myTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; cell.myImageView.image = userImage; } 

不知道问题是否真的与此有关,所以让我知道是否有帮助。

当我发生奇怪的调整行为时,Autolayout是我的第一个嫌疑犯。 尝试closuresAutolayout,看看resize是否仍然存在。

  1. 在Storyboard或NIB中selectViewController
  2. 点击Xcode窗口右侧的“File Inspector”标签
  3. 在“界面生成器文档”部分下,取消选中“使用自动离开”

如果你需要Autolayout,你可能需要用一些代码来对抗它。