2012-09-29 127 views
0

从iPhone应用开发(最近9个月)开始,我只使用了IB。我有一个项目可以由另一位开发人员构建,我需要针对iPhone屏幕进行优化。在IB中没有问题,我知道如何做到这一点,但在这个项目中,导航栏只是使用代码添加的,并且是图像视图。有人可以告诉我在IB未使用时如何调整/定位导航栏吗?我试图增强这个应用程序的iPhone 5屏幕。如何在没有IB的情况下添加大小调整

#define BAR_FRAME CGRectMake(0,0,320.0f,43.0f) 

@implementation ICNavbarView 
@synthesize homeButton=__homeButton; 
    @synthesize prevButton=__prevButton; 
@synthesize nextButton=__nextButton; 
@synthesize delegate=__delegate; 

- (id)initWithFrame:(CGRect)frame 
{ 
LogCmd(); 
self = [super initWithFrame:BAR_FRAME]; 
if (self) { 
    self.backgroundColor = [UIColor clearColor]; 
    self.alpha = 0.9f; 

    // Add Navigation bar background  // <<<<<< navigation bar from ui image 
    UIImageView *bgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BgNavBarNew"]]; 
    [self addSubview:bgView]; 




    // Add back button 
    __prevButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    __prevButton.frame = CGRectMake(30.0f, 6.0f, 29.0f, 31.0f); 
    UIImage *prevButtonPressed = [UIImage imageNamed:@"BtnPrevPressed"]; 
    [__prevButton setImage:[UIImage imageNamed:@"BtnPrev"] forState:UIControlStateNormal]; 
    [__prevButton setImage:prevButtonPressed forState:UIControlStateSelected]; 
    [__prevButton setImage:prevButtonPressed forState:UIControlStateHighlighted]; 
    [__prevButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [self addSubview:__prevButton]; 

    // Add next button 
    __nextButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    __nextButton.frame = CGRectMake(262.0f, 6.0f, 29.0f, 31.0f); 
    UIImage *nextButtonPressed = [UIImage imageNamed:@"BtnNextPressed"]; 
    [__nextButton setImage:[UIImage imageNamed:@"BtnNext"] forState:UIControlStateNormal]; 
    [__nextButton setImage:nextButtonPressed forState:UIControlStateSelected]; 
    [__nextButton setImage:nextButtonPressed forState:UIControlStateHighlighted]; 
    [__nextButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [self addSubview:__nextButton]; 

    // Add home button 
    __homeButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    __homeButton.frame = CGRectMake(145.0f, 6.0f, 31.0f, 30.0f); 
    UIImage *homeButtonPressed = [UIImage imageNamed:@"BtnHomePressed"]; 
    [__homeButton setImage:[UIImage imageNamed:@"BtnHome"] forState:UIControlStateNormal]; 
    [__homeButton setImage:homeButtonPressed forState:UIControlStateSelected]; 
    [__homeButton setImage:homeButtonPressed forState:UIControlStateHighlighted]; 
    [__homeButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [self addSubview:__homeButton]; 
} 
return self; 
} 

- (id)init 
{ 
return [self initWithFrame:CGRectZero]; 
} 

#pragma mark - Button handlers 

- (void)buttonPressed:(id)sender 
{ 
if (sender == __prevButton) { 
    [self.delegate performSelector:@selector(navBarPrevButtonPressed)]; 
} else if (sender == __homeButton) { 
    [self.delegate performSelector:@selector(navBarHomeButtonPressed)]; 
} else { 
    [self.delegate performSelector:@selector(navBarNextButtonPressed)]; 
} 
} 

@end 

到目前为止,我试过UIViewAutoresizingFlexibleHeight;这样

// Add Navigation bar background 
    UIImageView *bgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BgNavBarNew"]]; 
    [self addSubview:bgView]; 


    //resize 

    bgView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 

这似乎是没有区别的导航栏没有移动

我以前用过这个

回答

1

,但是我用了setter函数而不是使用该属性。我不知道这是否会改变什么或没有,但试着这样说:

[bgView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)]; 

的括号是很重要的,如果你有多个大小调整选项。

+0

将您的评论标记为正确,因为您对父视图的评论引导我进行修复。谢谢 – JSA986

相关问题