Reputation: 6754
I am trying to set an image to a UIImageView
of a SimpleTableCell
in a UITableView
. I have changed the size of the imageview, but whenever I try to set the image, it automatically resizes itself. I tried using the code here to resize the image and set it. But it only works when I set the image dimensions to (20x20) which is half of the size of the UIImageView
(40x40). So it comes out blurred. I also tried setting UIAspectRatioFit/UIAspectratioFill
and clipsToBounds = YES
. Nothing seems to work.
Another strange part is that the imageView
doesn't resize itself when I use an image directly downloaded from the web like so:
- (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;
}
But then I store this image into a documents directory and then try to reload in elsewhere, the resizing occurs. Any solutions?
Upvotes: 3
Views: 5773
Reputation: 11675
Your SimpleTableCell is a subClass of UITableViewCell
that you created? This imageView is a property of this subclass?
Just a guess:
Every UITableViewCell has a built-in imageView read-only property. In the code that you posted, you are using this default property, which I believe cannot have it's frame modified, it's kind of fixed in the left side of the cell.
Look for imageView property inside the documentation: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/index.html#//apple_ref/occ/instp/UITableViewCell/imageView
So, if you do have your custom cell with your own imageView, make sure to not call it imageView
too, because you may end using the default UITableViewCell
's property, and not your own, which will have all your frame customizations and etc.
You should reference your cell by your customClass and call your property like this:
- (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;
}
Don't know if the problem is really related do this, so let me know if it helped or not.
Upvotes: 14
Reputation: 9426
When weird resizing behavior happens for me, Autolayout is my first suspect. Try turning Autolayout off and see if the resizing still occurs.
If you need Autolayout you'll probably have to battle it with some code.
Upvotes: 1