我有一个uitabbarcontroller,它添加了一个UIViewController。 (我尽可能减少到最小的情况)。这个viewcontroller调用一个UIView,它通过:
绘制一个UIButton- (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];
}
在没有内部文本的情况下绘制按钮。只有当我触摸显示屏时才会正确绘制。
我的解决方案如下:给标签栏控制器两个UIViewControllers进行控制。然后强制抽取第二个,然后回到第一个:
tabBarController.selectedViewController = [tabBarController.viewControllers objectAtIndex:1];
tabBarController.selectedViewController = [tabBarController.viewControllers objectAtIndex:0];
这个解决方案有效,但这是一个愚蠢的黑客攻击。有更好的方法吗?
答案 0 :(得分:-1)
您发布的代码似乎不适合drawRect:implementation。您应该将此代码添加到视图init实现,或添加到viewControllers loadView或viewDidLoad实现。
这两行没有做任何有用的事情你可以把它们排除在外:
CGPoint centern=CGPointMake(CGRectGetMidX(brect), CGRectGetMidY(brect) );
[button setCenter:centern];
无论何时在视图上设置框架,视图中心都会隐式设置为框架中点(中心)。