2010-05-28 10 views

Antwort

25

Entweder eine UILabel über Ihre Imageview verwenden oder eine Zeichenfolge in der aktuellen Grafikkontext zeichnen mit

- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(UILineBreakMode)lineBreakMode 
+0

danke es hat funktioniert –

+0

Genau das, was ich gesucht habe! –

+13

Nur um die Antwort zu erweitern, ist dies eine Methode für NSString. Also zum Beispiel: '[@" test "drawInRect: CGRectMake (0, 0, 10, 10) mitFont: [UIFont systemFontOfSize: 8]];' – Marty

1

TextImageView.h mit

@interface TextImageView : UIView 

@property (nonatomic, strong) UIImage *image; 
@property (nonatomic, strong) NSString *text; 

@end 

TextImageView.m

@implementation TextImageView 

- (void)drawRect:(CGRect)rect 
{ 
    [self.image drawInRect:self.bounds]; 
    [self.text drawInRect:self.bounds 
      withAttributes:@{}]; 
} 

@end 

Die Methode in der akzeptierten Antwort ist veraltet. Die Methode, die Sie stattdessen verwenden möchten, ist - [NSString drawInRect:withAttributes:].

Sie sollen zum Aufruf dieser Methode aus der drawRect: Methode einer UIView Unterklasse, aber wenn Sie UIImageView Unterklasse, drawRect: wird nie aufgerufen werden. (From the docs: „UIImageView stellt nicht den drawRect: Methode ihrer Unterklassen.“)

Also, Sie wirklich nicht Text auf einem UIImageView ziehen können, aber Sie können UIView Unterklasse und haben sie ein Bild mit Text oben ziehen wie oben vorgeschlagen.

Verwandte Themen