-2

我面临着奇怪的问题。我有一个使用 UIViewController 扩展的 baseViewController。在我的 BaseView 控制器中,我在其顶部有一个自定义 HeaderBar (UIImageView)。

然后我制作了一个新的 ViewController 并用 baseViewController 扩展了这个新的 ViewController。BaseViewController 中的 headerBar 出现在我的 UIViewController 上。但是现在,如果我在 NEWViewController 中的 headerBar 上添加任何子视图,那么它不会超过那个,而它会在标题栏后面。

任何人都可以建议做什么。

已编辑

这是我的代码。

BASEViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
CGFloat xOffset = 0;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    xOffset = 224;
}

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization

   headerBarView = [self addHeaderBar];
    //[self.view addSubview:headerBarView];
    [self.view insertSubview:headerBarView belowSubview:self.view];

}

return self;
}
-(UIView *)addHeaderBar{

UIView *header_bar = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320, 50.0)];

//HeaderBar Image
UIImageView *headerBar = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0.0, 320, 50.0)];
[headerBar setImage:[UIImage imageNamed:@"top_bar"]];
[header_bar addSubview:headerBar];
return header_bar;
}

用 BaseViewController 扩展的 NEWViewController

  //Back Button
back =  [UI getActionBarButtonWithName:[NSString stringWithFormat:@"Back"] andCGRect:CGRectMake(7.0, 100.0, 55.0, 31.0) andEdgeInset:UIEdgeInsetsMake(0.0, 9.0, 2.0, 0.0) withBackGround:[UIImage imageNamed:@"back_button"]]; 
   [self.view bringSubviewToFront:back];

+(UIButton *)getActionBarButtonWithName:(NSString *)name andCGRect:(CGRect)rect andEdgeInset:(UIEdgeInsets)edgeInset withBackGround:(UIImage *)background{

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = rect;
[button setBackgroundImage:background forState:UIControlStateNormal];
[button setTitleEdgeInsets:edgeInset];
[button setTitle:name forState:UIControlStateNormal];
[button.titleLabel setFont:[UIFont boldSystemFontOfSize:13.0]];
[button setUserInteractionEnabled:YES];

return button;
}
4

3 回答 3

0

尝试使用

[self.view bringSubviewToFront:button];
于 2013-04-18T11:40:59.817 回答
0

如果您有很多视图,您也可以使用其中任何一种 -

[self.view insertSubview:<#(UIView *)#> aboveSubview:<#(UIView *)#>]
[self.view insertSubview:<#(UIView *)#> atIndex:<#(NSInteger)#>]
[self.view insertSubview:<#(UIView *)#> belowSubview:<#(UIView *)#>]

希望它会帮助你。

于 2013-04-18T10:55:04.350 回答
0

新的 UIVIew 覆盖您的基本视图控制器,您可以设置新视图的框架,然后添加子视图。

前任。UIView* tempView=[UIView alloc]initWithFrame:CGRectMake(0,44,320,420)]; [self.view addSubView:temView];

于 2013-04-18T12:53:53.137 回答