UIImageView自动调整大小

时间:2013-08-08 15:03:24

标签: ios uitableview uiimageview uiimage

我正在尝试将图片设置为UIImageViewSimpleTableCell的{​​{1}}。我已经改变了imageview的大小,但每当我尝试设置图像时,它会自动调整大小。我尝试使用代码here来调整图像大小并进行设置。但它仅在我将图像尺寸设置为(20x20)时才有效,该尺寸是UITableView(40x40)尺寸的一半。所以它模糊了。我还尝试设置UIImageViewUIAspectRatioFit/UIAspectratioFill。似乎没什么用。

另一个奇怪的部分是,当我使用直接从网上下载的图像时,clipsToBounds = YES不会自行调整大小:

imageView

然后我将此图像存储到文档目录中,然后尝试在其他地方重新加载,进行大小调整。任何解决方案?

2 个答案:

答案 0 :(得分:14)

您的SimpleTableCell是您创建的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;
}

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

答案 1 :(得分:1)

当我发生奇怪的大小调整行为时,Autolayout是我的第一个嫌疑人。尝试关闭Autolayout并查看调整大小是否仍然存在。

  1. 在故事板或NIB中选择ViewController
  2. 点击Xcode窗口右侧的“文件检查器”标签
  3. 在“界面生成器文档”部分下,取消选中“使用Autolayout”确认
  4. 如果你需要Autolayout,你可能不得不用一些代码来对抗它。