2013-10-10 4 views
-1

Я использую настраиваемое изображение для кнопки панели навигации. В iOS 6, если мы установили элемент кнопки с левой кнопкой с кнопкой, его значение x начинается с 10 пикселей. Но в iOS 7, если мы делаем то же самое, x значение кнопки начинается с 20px. Есть ли способ, с помощью которого мы начнем с 10px, поскольку внешний вид кнопок не очень хорош с этим в iOS 7?Позиционирование кнопок панели навигации в iOS 7

ответ

0

Нет, вы не можете изменить рамку UIBarButtonItem. Вместо этого подкласс UINavigationBar.

1

UIBarButtonItems может быть инициализирован с использованием метода initWithCustomView:. Таким образом, вы можете создать нестандартное представление (в вашем случае элемент кнопки панели навигации с настраиваемым изображением) и инициализировать элемент панели с этим пользовательским представлением. Пример:

CustomView *view = [[CustomView alloc] initWithImage:[UIImage imageNamed:@"back.png"]]; 
    UIBarButtonItem *backBtn = [[UIBarButtonItem alloc] initWithCustomView:view]; 

Вы можете установить любой кадр, который вы хотите в initWithImage: метод CustomView:

- (id)initWithImage:(UIImage *)image { 
    self = [super initWithFrame:CGRectMake(0, 0, 50, 44)]; 

    CGRect backArrowFrame; 


    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) { 
     backArrowFrame = CGRectMake(-8, 12, 12.5, 20.5); 
    } else { 
     backArrowFrame = CGRectMake(-2, 12, 12.5, 20.5); 
    } 

    UIButton *imView = [[UIButton alloc] initWithFrame:backArrowFrame]; 
    [imView setContentMode:UIViewContentModeScaleAspectFit]; 
    [imView setBackgroundImage:image forState:UIControlStateNormal]; 
    [imView addTarget:target action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside]; 

    [self addSubview:imView]; 


    return self; 
} 

Таким способом можно изменить кадр UIBarButtonItem.

+0

Я знаю this..i не хотел идти через этот way.I было что-то вроде toplayoutguide, которые мы можем использовать, чтобы обеспечить направляющий ожидая для этих кнопок. –

0

Добавить кнопку в качестве элемента навигации в ios7 ниже

UIButton *btnAdd = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 60, 30)]; 

[btnAdd setContentMode:UIViewContentModeScaleAspectFit]; 

[btnAdd setBackgroundImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal]; 

[btnAdd addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *btnAdd = [[UIBarButtonItem alloc] initWithCustomView:imView]; 

self.navigationItem.rightBarButtonItem = btnAdd; 
Смежные вопросы