UIImageView自动resize
我想设置一个图像到UITableView
的SimpleTableCell
的UIImageView
。 我已经改变了imageview的大小,但每当我尝试设置图像,它会自动调整自己。 我试图使用这里的代码来调整图像的大小,并设置它。 但它只适用于将图像尺寸设置为(20×20),这是UIImageView
(40×40)大小的一半。 所以变得模糊了。 我也尝试设置UIAspectRatioFit/UIAspectratioFill
和clipsToBounds = 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是否仍然存在。
- 在Storyboard或NIB中selectViewController
- 点击Xcode窗口右侧的“File Inspector”标签
- 在“界面生成器文档”部分下,取消选中“使用自动离开”
如果你需要Autolayout,你可能需要用一些代码来对抗它。