开发者

UITabbarController not drawing a view properly

I have a uitabbarcontroller which has one UIViewController added to it. (I reduced to smallest case possible). This viewcontroller calls up a UIView which draws a UIButton via:

- (void)drawRect:(CGRect)rect 
{
    CGRect brect = CGRectMake(0, 330, 60, 27);
    CGPoint centern=CGPointMake(CGRectGetMidX(brect), CGRectGetMidY(brect) );
    UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setFrame:brect];
    [button setCenter:centern];
    [button setTitle:@"New" forState:UIControlStateNormal];
    [self addSubview:button];
 }

The button is drawn without the inside text. Only when I touch the display is it then drawn properly.

My solution has been the following: Give the tab-bar controller two UIViewControllers to control. Then force a draw of the second one, and then back to the first one:

tabBarController.selectedViewController = [tabBarController.viewControllers objectAtIndex:1];
tabBarController.selectedViewController = [tabBarController.viewControllers objectAtIndex:0];

This solution works, but it's a stupid hack. Is there a better w开发者_开发百科ay to do this?


The code you posted dosen't seem to fit inside a drawRect: implementation. You should add this code to your views init implementation, or to your viewControllers loadView or viewDidLoad implementation.

These two lines do not do anything useful you can leave them out:

CGPoint centern=CGPointMake(CGRectGetMidX(brect), CGRectGetMidY(brect) );
[button setCenter:centern];

Whenever you set a frame on a view, the views center is implicitly set to the frames midpoint(center).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜