0

我正在为 iPhone 消息应用程序的 UITextView 工作。我在 UITextView 上添加了一个 UIImage 作为子视图。我想调整 UIImage 框架大小,如 UITextView 框架高度。现在我已经为此进行了编码,但是当文本进入下一行时,图像帧高度没有增加。在我们输入更多字符后,图像帧大小会增加。

    messageTextView = [[UITextView alloc] initWithFrame:CGRectMake(35, 5, 210, 30)];
    messageTextView.delegate = self;
    messageTextView.backgroundColor = [UIColor clearColor];
    messageTextView.clipsToBounds = NO;  
    messageTextView.font = [UIFont fontWithName:@"Helvetica" size:14];

    textViewImageView = [[UIImageView alloc]initWithFrame: CGRectMake(0, 0, 210, 30)];
    textViewImageView.image = [UIImage imageNamed: @"textbg.png"];
    textViewImageView.contentMode    = UIViewContentModeScaleToFill;
    textViewImageView.contentStretch = CGRectMake(0.5, 0.5, 0, 0);

    [messageTextView addSubview: textViewImageView];
    [messageTextView sendSubviewToBack: textViewImageView];
    [messageTextView addSubview:textViewLabel];
    [self.view addSubview:messageTextView];


-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
        CGRect frame = messageTextView.frame;
        frame.size.height = messageTextView.contentSize.height;

        messageTextView.frame = CGRectMake(35, 5, 210, frame.size.height);
        textViewImageView.frame = CGRectMake(0, 0, 210, frame.size.height);
}

当文本进入下一行时,您能否请任何人帮助解决增加 UIImageview 高度的问题?提前致谢。

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

0

enter image description here

change

 [messageTextView addSubview: textViewImageView];

 textViewImageView = [[UIImageView alloc]initWithFrame: CGRectMake(0, 0, 210, 30)];

 textViewImageView.frame = CGRectMake(0, 0, 210, frame.size.height);

into

 [messageTextView.superview addSubview: textViewImageView];

 textViewImageView = [[UIImageView alloc]initWithFrame: CGRectMake(35, 5, 210, 30)];

 textViewImageView.frame = CGRectMake(35, 5, 210, frame.size.height);

As I tested just now, it works fine.

Edit 2 In my test.

TestViewController.h

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController <UITextViewDelegate>{

}

@property (nonatomic, strong) IBOutlet UITextView *textView;
@property (nonatomic, strong) IBOutlet UIImageView *imageView;


@end

TestViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.textView.delegate = self;

    // Do any additional setup after loading the view, typically from a nib.
}

-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    CGRect frame = self.textView.frame;
    frame.size.height = self.textView.contentSize.height;

    self.textView.frame = frame;
    self.imageView.frame = frame;

    return YES;
}
于 2012-07-20T16:23:26.420 回答