Я борюсь со странным поведением UIToolbar в приложении iOS7+ для iPhone.
Вот как я его создал:
//toolbar
self.bottomToolbar=[[UIToolbar alloc] initWithFrame:CGRectMake(0.0, self.view.bounds.size.height-44.0, self.view.bounds.size.width, 44.0)];
self.bottomToolbar.autoresizingMask=(UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth);
[MKUIHelper toolbar:self.bottomToolbar setBarStyle:MKBarStyleWhite];
self.bottomToolbar.items=@[];
[self.view addSubview:self.bottomToolbar];
Когда мне нужно обновить его, я звоню (на самом деле обновляя только один из его элементов, но это не имеет значения):
-(void)updateToolbar
{
UIBarButtonItem *doneBarButtonItem=[[UIBarButtonItem alloc] initWithTitle:@"done" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonDidPress:)];
doneBarButtonItem.tintColor=MK_Color_Green;
UIBarButtonItem *clearBarButtonItem=[[UIBarButtonItem alloc] initWithTitle:@"clear" style:UIBarButtonItemStylePlain target:self action:@selector(clearButtonDidPress:)];
clearBarButtonItem.tintColor=MK_Color_Pink;
UIBarButtonItem *spaceBetweenBackAndQuantity=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *spaceBetweenQuantityAndClear=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *quantityItem=[self quantityBarButtonItem];
self.bottomToolbar.items=[NSArray arrayWithObjects:doneBarButtonItem, spaceBetweenBackAndQuantity, quantityItem, spaceBetweenQuantityAndClear, clearBarButtonItem, nil];
[self.rootViewController reloadToolbar];
}
Оба объекта UIBarButtonItem
, созданные с использованием initWithTitle:..
, каким-то образом имеют отрицательные левые и правые отступы. Это можно грубо исправить, добавив дополнительный фиксированный тип пробела UIBarButtonItems с обеих сторон массива элементов. Другими словами: компенсируйте странные начальные левые и правые отступы фиксированным пробелом типа UIBarButtonItems.
Помогите мне кто-нибудь, пожалуйста. Что вызывает такой странный эффект? Как я могу избавиться от этого странного заполнения?
Вот как это выглядит:
autoresizingMask
имеет какое-либо отношение к вашей проблеме, но попробуйте удалить эту строку и посмотреть, что произойдет. Кроме того, вы используете авторазметку? - person MendyK   schedule 21.01.2015