2009-08-01 36 views
1

有谁知道如何创建具有UIImage背景的文本字段并进行文字包装?在iPhone上有图像背景的环绕文本字段?

似乎在UITextField上无法使用换行符,而UITextView无法使用背景图像!此外,它应该更改控件​​的大小或至少提醒更改行数以便代表可以更改其大小。

此类控件的一个示例是SMS应用程序中消息的输入字段。

编辑:代码还应该获取文本字段以始终显示正在编辑的文本。很显然,当UITextView在编辑时改变大小时,它会以某种方式失去对当前文本的关注。

谢谢! Aviad。

回答

2

单词换行在UITextField上不可用,因为UITextField只支持单行文本。

使用UITextView。使textView.backgroundColor = [UIColor clearColor]。首先添加UIImage,然后添加UITextView。确保尺寸是正确的,你应该没问题。

至于改变的UITextView的大小,在你UITextViewDelegate,做这样的事情:

- (void)textViewDidChange:(UITextView *)textView 
{ 
    NSString *s = textView.text; 
    CGSize testSize = CGSizeMake(textView.frame.size.width, NSIntegerMax); 
    CGSize neededSize = [s sizeWithFont: textView.font constrainedToSize: testSize  lineBreakMode: UILineBreakModeWordWrap]; // or UILineBreakModeCharacterWrap? 

    if (neededSize.height > testSize.height) 
    { 
     // grow textView 
     textView.frame = CGRectMake(textView.frame.origin.x, textView.frame.origin.y, neededSize.width, neededSize.height); 

     // then adjust the image size -- something like this 
     imageView.frame = textView.frame 
    } 

} 
+0

正如我所说的,我想要一个类似于iPhone应用程序中SMS应用程序的行为。当文本需要包装时,整个组件需要增长(包括图像,可能使用UIImage的stretchImage消息)。 – 2009-08-01 15:44:47

0

最后,我写我自己的代码,它工作在一定程度上有很多解决方法(改变焦点例如,在再次删除所有文本时调整大小等)。如果任何人有兴趣,我会发布代码。

在其他消息,就在今天,我在这里看到了一个不同的问题,这里叫做IFVerticallyExpandingTextField。这个名字很有希望,代码在这里,我会看看。任何有类似问题的人,您可能也想看到这一点。

我的错误,我没有仔细阅读:IFVerticallyExpandingTextField是为Mac,而不是iPhone。