UIToolbar точный размер - PullRequest
       42

UIToolbar точный размер

2 голосов
/ 12 декабря 2011

Я пытаюсь настроить панель навигации с помощью панели инструментов.Я реализовал это программно следующим образом:

UIToolbar* tools = [[UIToolbar alloc] initWithFrame: CGRectMake(0, 0, 100, 44.01)];

, а затем добавил его в панель навигации.Проблема в том, что у меня такой уродливый эффект на границах:

navigationbar + toolbar

Я пытался изменить значения y и высоты, но безрезультатно.У вас есть идеи, чтобы избежать этого?

Заранее спасибо, ясса

Ответы [ 3 ]

2 голосов
/ 13 декабря 2011

Я частично согласен с предыдущими ответами и комментариями. Решение, которое вы предложили, прекрасно работает для пользовательских кнопок. Но что, если я хочу реализовать стандартную кнопку «Изменить»? Доступ к стандартным кнопкам / значкам осуществляется через класс UIBarButtonItem, а не UIButton. И вы не можете добавлять объекты UIBarButtonItem в UIView.

После многих исследований в Интернете я нашел решение, полностью соответствующее моим требованиям. Панель инструментов должна быть создана следующим образом:

UIToolbar *tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 95.0f, 44.01f)];
tools.tintColor = self.navigationController.navigationBar.tintColor;
tools.barStyle = -1;

И вот результат:

my toolbar

Надеюсь, это поможет! Яс

2 голосов
/ 12 декабря 2011

Я бы так не поступил. Вы можете достичь того же эффекта, добавив представление с 2 кнопками в navigationItem.rightBarButtonItem. это очень просто:

// view that will hold the buttons
UIView* container = [[UIView alloc] init];

// create 1 button and add it to the container
UIButton* button = [[UIButton alloc] init........];
[container addSubview:button];


//create 2 button and add it to the container
button = [[UIButton alloc] init.........];
[container addSubview:button];


// now create a Bar button item
UIBarButtonItem* barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:container];

// set the nav bar's right button item
self.navigationItem.rightBarButtonItem = barButtonItem;
0 голосов
/ 13 февраля 2012

Или вы можете сделать это таким образом.Просто создайте новый подкласс UIToolbar как этот

   @interface MyToolbar : UIToolbar

    @end

    @implementation MyToolbar

    - (id)initWithFrame:(CGRect)frame {

        if ((self = [super initWithFrame:frame])) {

            self.opaque = NO;
            self.backgroundColor = [UIColor clearColor];
            self.clearsContextBeforeDrawing = YES;      
        }
        return self;
    }


    - (void)drawRect:(CGRect)rect {
        // do nothing
    }

    - (void)dealloc {
        [super dealloc];
    }

@end

и используйте его как обычный UIToolbar.Я не знаю почему, но это просто работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...