Могу ли я изменить положение элемента навигационной панели?
Вот снимок:
![enter image description here]()
И код здесь:
UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeCustom];
leftButton.frame = CGRectMake(0.0f, 0.0f, 46.0f, 32.0f);
[leftButton setBackgroundImage:[UIImage imageNamed:@"navi_register_up.png"] forState:UIControlStateNormal];
[leftButton addTarget:self action:@selector(doRegister) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *leftBarItem = [[UIBarButtonItem alloc] initWithCustomView:leftButton];
self.navigationItem.leftBarButtonItem = leftBarItem;
[leftBarItem release];
Есть ли способ переместить кнопку на несколько пикселей?
Спасибо:)
Ответы
Ответ 1
Вам нужно создать UIBarButtonItem
с системным элементом UIBarButtonSystemItemFixedSpace
с шириной -5, которая удалит дополнение 5 px
. Затем установите leftBarButtonItems
как с элементом фиксированного пространства, так и с элементом задней панели, подобным этому -
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
[negativeSpacer setWidth:-5];
self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:negativeSpacer,leftBarItem,nil];
Ответ 2
Вы можете попробовать это,
leftButton.imageEdgeInsets = UIEdgeInsetsMake(-2, 0, 0, 0);
Ответ 3
Добавьте элемент UIBarButtonSystemItemFlexibleSpace
между элементами, которые вы хотите разделить.
Ответ 4
Вот версия наиболее голосующего ответа Swift 3:
let soundButton = UIBarButtonItem(image:image , style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.soundPressed))
let negativeSpacer = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
negativeSpacer.width = -5
self.navigationItem.rightBarButtonItems = [negativeSpacer,soundButton]
Ответ 5
Высота стандартной кнопки составляет 29pt. Сделайте себе одолжение и просто уменьшите высоту leftbutton
и высоту navi_register_up.png
.
Ответ 6
Вы можете использовать этот код, я думаю, это будет полезно для вас.
UIButton * button = [UIButton buttonWithType: UIButtonTypeCustom]; button.frame = CGRectMake (0,0,50,32); [кнопка setBackgroundImage: [UIImage imageNamed: @ "btn_back.png" ] forState: UIControlStateNormal];
[button addTarget:self action:@selector(BackBtnClicked) forControlEvents:UIControlEventTouchUpInside];
UIView *backButtonView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 32)];
backButtonView.bounds = CGRectOffset(backButtonView.bounds, -1, -4);
[backButtonView addSubview:button];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButtonView];
//barButtonItem.imageInsets = UIEdgeInsetsMake(-6, 20, 30, 0);
[self.navigationItem setLeftBarButtonItem:barButtonItem];
Ответ 7
У меня была аналогичная проблема, и я нашел вариант, которого хватало в раскадровке. Просто нажмите на элемент навигационной панели, и вы увидите параметры позиции x/y.
![введите описание изображения здесь]()