UIImageView-Letters icon indicating copy to clipboard operation
UIImageView-Letters copied to clipboard

Unable to set UIImage of UITableViewCell

Open steilerDev opened this issue 10 years ago • 7 comments

I am trying to use your library to set the image of a UITableViewCell (basic style).

I am using the following method to do so: cell.imageView?.setImageWithString(user.displayName, color: UIColor(hex: MVColor.Primary.Normal))

Unfortunately the image is not set and I am getting the following error:

<Error>: CGContextRestoreGState: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.

I tried debugging the error. By using this method I found the cause of this problem. The error is produced by this call: CGContextTranslateCTM(context, -self.bounds.origin.x, -self.bounds.origin.y); (line 121 in your latest CocoaPods release) in your - (UIImage *)imageSnapshotFromView:(UIView *)inputView function.

It would be great to resolve this problem or find a workaround!

Thanks

steilerDev avatar Apr 19 '15 09:04 steilerDev

Hey @steilerDev, thanks for pointing this out. Try pulling down the latest cocoapod release, and let me know if that fixes things.

bachonk avatar Apr 19 '15 16:04 bachonk

Hey @bachonk, thanks for getting back that fast. I can see that you released a new version on Github, but CocoaPods is not updating (when running pod update). Is it a problem on your side or on CocoaPods side (Never looked how they actually detect new versions)?

Edit: Cocoapods.org is still listing your pod as version 1.0

steilerDev avatar Apr 19 '15 16:04 steilerDev

Forgot to push up the latest to cocoapods, thanks for pointing that out. Try now

bachonk avatar Apr 19 '15 19:04 bachonk

Pod update worked, unfortunately the error persists :/

steilerDev avatar Apr 19 '15 19:04 steilerDev

I am not sure, but by looking at the error and your code, I think the problem is that the size of the image view is not set until you are setting an actual image into the view. Your framework uses the size of the context to create the image, which is not possible (or lead to that error) because the context size is 0x0 before setting the image.

Not sure if this is a fix but having a function that would explicitly draw inside a rect and return/set the image. Something like imageFromText:inRect: might help. Does that make sense?

steilerDev avatar Apr 19 '15 19:04 steilerDev

You must set frame for cell uimageview.

[cell.uiimageview setframe:cgrectmake(0,0,width, height)];

mariovillamizar avatar Aug 02 '15 22:08 mariovillamizar

See here Issue 20

YahyaBagia avatar Feb 20 '18 07:02 YahyaBagia