Ho bisogno di prendere una UIImage da UITextView o UILabel. Ho un metodo che estrarrà un'immagine con successo da altri tipi di viste ([vista UIViewController], MKMapView, UIButtons) ma sto solo ottenendo un rect bianco per il mio UITextView.estrarre UIImage da UITextView o UILabel dà immagine bianca
Ho sbattuto la testa contro il muro per un po 'e ho il sospetto di qualcosa di veramente, davvero di base.
molte grazie!
@interface TaskAccomplishmentViewController : UIViewController {
MKMapView *mapView;
UILabel *timeLeftText;
UITextView *challengeText;
UIButton *successButton;
<snip>
- (void) setChallangeImageToImageFromChallenge {
// works
// [currChallenge setChallengeImage:[UIImageUtils grabImageFromView:mapView]];
// [currChallenge setChallengeImage:[UIImageUtils grabImageFromView:[self view]]];
// [currChallenge setChallengeImage:[UIImageUtils grabImageFromView:successButton]];
// doesn't work
// [currChallenge setChallengeImage:[UIImageUtils grabImageFromView:timeLeftText]];
[currChallenge setChallengeImage:[UIImageUtils grabImageFromView:challengeText]];
}
e il grabImage da un codice UIView
+(UIImage *)grabImageFromView: (UIView *) viewToGrab {
UIGraphicsBeginImageContext(viewToGrab.bounds.size);
[[viewToGrab layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
}
Ecco perché ho eseguito "UIImage" e "UITextView". Era una specie di risposta a un dilemma dei prigionieri, preferirei avere ragione a metà di quello totalmente sbagliato ... davvero, era intenzionale ... davvero. :) – Oldmicah
Per ottenere un'immagine nitida anche sui display retina, avevo bisogno di sostituire 'UIGraphicsBeginImageContext (viewToGrab.bounds.size);' con questo: 'UIGraphicsBeginImageContextWithOptions (self.bounds.size, self.opaque, 0.0);' come richiesto in [questa domanda] (http://stackoverflow.com/q/4334233/2471006) e spiegato nella sua risposta accettata. Forse potresti voler aggiornare la tua risposta, comprese quelle informazioni. – anneblue