1
[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]]; }];
4

3 回答 3

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){ }];
于 2012-06-18T21:59:22.533 回答
0

您从什么方法调用此代码?您的框架设置可能会被后续更改覆盖。框架尺寸尚未设置,viewDidLoad但它们应该在viewWillAppear调用时设置 - 所以在那里执行你的额外布局。

于 2012-06-18T20:59:06.653 回答
0

我最近发现,要获得 UITextView 的内容大小(从而将其框架设置为“适合”其内容,无需滚动),您需要先将文本视图添加为子视图。在它成为子视图之前, contentSize 不会返回正确的值(也许设置框架不起作用?)。

只是猜测...

于 2012-06-18T22:54:19.283 回答