UIImageView不是设计用于保存任何文本,但您可以在其中或在其顶部/下方添加一个UILabel或多个文本UITextField,具体取决于您要执行的操作.
例如,假设您希望允许用户编辑图像中的一段文本.你可以这样做:
UIImage* image = [UIImage imageNamed:@"my_image.png"];
UIImageView* imageView = [[UIImageView alloc] initWithImage:image];
imageView.userInteractionEnabled = YES;
UITextField* textField = [[UITextField alloc]
initWithFrame:CGRectMake(10, 10, 50, 20)];
textField.placeholder = @"type here";
[imageView addSubview:textField];
// You might also want to set the imageView's frame.
[self.view addSubview:imageView];
Run Code Online (Sandbox Code Playgroud)
如果你添加a UITextField作为a的子视图,UIImageView设置userInteractionEnabledto 是很重要的YES,因为它默认NO为该superview(YES在大多数UIViews中通常默认为).
附录
如果您希望用户能够单击图像中的任何位置来编辑文本,可以使用以下方法:子类UIControl并添加a UIImageView和a UITextField作为子视图,并将点击操作连接UIControl到UITextField.这样的事情(警告:没有经过测试的代码,但它传达了一般的想法):
@interface ImageAndTextView : UIControl {
UIImageView* imageView;
UITextField* textField;
}
@property (nonatomic, retain) UIImageView* imageView;
@property (nonatomic, retain) UITextField* textField;
- (void) click;
@end
@implementation ImageAndTextView
@synthesize imageView, textField;
- (id) initWithFrame: (CGRect) frame_ {
if (self = [super initWithFrame:frame_]) {
UIImage* image = [UIImage imageNamed:@"my_image.png"];
self.imageView = [[[UIImageView alloc] initWithImage:image] autorelease];
imageView.userInteractionEnabled = YES;
[self addSubview:imageView];
CGRect textFrame = CGRectMake(10, 10, 50, 20); // whatever frame you want
self.textField = [[[UITextField alloc]
initWithFrame:textFrame] autorelease];
[self addSubview:textField];
// Now register an event to happen if the user clicks anywhere.
[self addTarget:self action:@selector(click)
forEvent:UIControlEventTouchUpInside];
}
return self;
}
- (void) click {
[textField becomeFirstResponder];
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5372 次 |
| 最近记录: |