UITextView不会响应其框架中的更改

时间:2012-06-18 20:48:14

标签: objective-c ios

[message setBackgroundColor:[UIColor redColor]];
[message setFrame:CGRectMake(message.frame.origin.x, message.frame.origin.y, message.frame.size.width, 20)];

背景颜色发生变化,因此IB中的连接正常,但UITextView的大小不会改变。我尝试了多种方法,无法改变位置或大小。

如果我从按钮开始执行某个操作但在didFinishPickingMediaWithInfo的回调中没有。

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{

    [picker dismissViewControllerAnimated:NO completion:^{

        [UIView animateWithDuration:0.1
                          delay:0.0
                        options: UIViewAnimationCurveEaseOut // Doesnt really matter since its so fast
                     animations:^{
                         [message setFrame:CGRectMake(message.frame.origin.x, message.frame.origin.y, message.frame.size.width, 20)];
                     } 
                     completion:^(BOOL finished){[message setBackgroundColor:[UIColor redColor]]; }];

3 个答案:

答案 0 :(得分:1)

试试这个:

[message setBackgroundColor:[UIColor redColor]];

[UIView animateWithDuration:0.1
delay:0.0
options: UIViewAnimationCurveEaseOut // Doesnt really matter since its so fast
animations:^{
    [message setFrame:CGRectMake(message.frame.origin.x, message.frame.origin.y, message.frame.size.width, 20)];
} 
completion:^(BOOL finished){ }];

答案 1 :(得分:0)

您从哪个方法调用此代码?有可能您的框架设置被后续更改覆盖。 viewDidLoad中尚未设置帧大小,但应在调用viewWillAppear时设置它们 - 因此请在此处执行其他布局。

答案 2 :(得分:0)

我最近发现,要获取UITextView的内容大小(并因此将其框架设置为“适合”其内容,不需要滚动),您需要将文本视图添加为子视图首先。在它成为子视图之前,contentSize不会返回正确的值(也许设置框架的工作方式不相似?)。

只是一个猜测......