Chcę tworzyć UIBarButtonItems
programowo i umieszczać te elementy o stałej przestrzeni między przyciskami.
ios
iphone
xcode
uibarbuttonitem
Świat Linuksa
źródło
źródło
.width
właściwość.Szybki
// Fixed Space let fixedSpace: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil) fixedSpace.width = 20.0 // Flexible Space let flexibleSpace: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
źródło
UIBarButtonItem *todayItem = [[UIBarButtonItem alloc] initWithTitle:@"Today" style:UIBarButtonItemStylePlain target:self action:@selector(update_baritem:)]; todayItem.tag = 2; UIBarButtonItem *cashItem = [[UIBarButtonItem alloc] initWithTitle:@"Cash" style:UIBarButtonItemStylePlain target:self action:@selector(update_baritem:)]; cashItem.tag = 3; UIBarButtonItem *creditItem = [[UIBarButtonItem alloc] initWithTitle:@"Credit" style:UIBarButtonItemStylePlain target:self action:@selector(update_baritem:)]; creditItem.tag = 4; UIBarButtonItem *allItem = [[UIBarButtonItem alloc] initWithTitle:@"All" style:UIBarButtonItemStylePlain target:self action:@selector(update_baritem:)]; allItem.tag = 1; UIBarButtonItem *returnItem = [[UIBarButtonItem alloc] initWithTitle:@"Return" style:UIBarButtonItemStylePlain target:self action:@selector(update_baritem:)]; returnItem.tag = 5; UIBarButtonItem *fixedItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; [fixedItem setWidth:455.0f]; UIBarButtonItem *fixed2Item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; [fixed2Item setWidth:37.0f]; UIBarButtonItem *flexibleItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; [self.toolbar setItems:@[fixed2Item, returnItem, creditItem, cashItem, fixedItem, todayItem, flexibleItem, allItem] animated:NO];
źródło
W ViewDidLoad:
//toolbar UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 416, 320, 44)]; // bar btns UIBarButtonItem *backBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRewind target:self action:@selector(goBack)]; UIBarButtonItem *forwardBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFastForward target:self action:@selector(goForward)]; UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; UIBarButtonItem *bookmarkBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(bookmark)]; UIBarButtonItem *refreshBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh)]; UIBarButtonItem *stopLoadingBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:self action:@selector(stopLoading)]; // add btns to the bar [toolBar setItems:[NSMutableArray arrayWithObjects:bookmarkBtn,backBtn,forwardBtn,flexibleSpace,refreshBtn,stopLoadingBtn, nil]]; // adds the toobar to the view [self.view addSubview:toolBar];
Nie zapomnij również o akcjach dla każdego przycisku (w tym przykładzie UIWebView):
-(void)goBack { [_webView goBack]; } -(void)goForward { [_webView goForward]; }
itp.
źródło
W przypadku Swift 3
UIBarButtonItem
ma inicjator o nazwieinit(barButtonSystemItem:target:action:)
.init(barButtonSystemItem:target:action:)
posiada następującą deklarację:convenience init(barButtonSystemItem systemItem: UIBarButtonSystemItem, target: Any?, action: Selector?)
UIBarButtonSystemItem
Jest to wyliczenie, który oferuje wiele przypadków, w tymdone
,play
,add
lubcancel
. Jednakże, w zależności od potrzeb, można również wybraćflexibleSpace
lubfixedSpace
przypadki.flexibleSpace
etui posiada następującą deklarację:fixedSpace
etui posiada następującą deklarację:Dlatego można programowo tworzyć stałe i elastyczne elementy przycisków spacji, jak pokazano poniżej:
let flexibleSpace = UIBarButtonItem( barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil )
let fixedSpace = UIBarButtonItem( barButtonSystemItem: UIBarButtonSystemItem.fixedSpace, target: nil, action: nil ) fixedSpace.width = 30 // Set width with the appropriate value
Jako przykład, poniższy kod Playground pokazuje, jak dodać dolny pasek z dwoma wyśrodkowanymi przyciskami odtwarzania i pauzy, oddzielonymi stałą przestrzenią 30 w kontrolerze widoku:
import PlaygroundSupport import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white title = "Home" } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) // Show navigation controller’s built-in toolbar navigationController?.setToolbarHidden(false, animated: false) // Create UIBarButtonItems let flexibleSpace1 = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) let playItem = UIBarButtonItem(barButtonSystemItem: .play, target: self, action: nil) let fixedSpace = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) fixedSpace.width = 30 let pauseItem = UIBarButtonItem(barButtonSystemItem: .pause, target: self, action: nil) let flexibleSpace2 = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) // Set the view controller toolbar items setToolbarItems([flexibleSpace1, playItem, fixedSpace, pauseItem, flexibleSpace2], animated: false) } override func viewWillDisappear(_ animated: Bool) { // Hide navigation controller’s built-in toolbar navigationController?.setToolbarHidden(true, animated: true) super.viewWillDisappear(animated) } } let viewController = ViewController() let navigationController = UINavigationController(rootViewController: viewController) PlaygroundPage.current.liveView = navigationController
Wyświetl podgląd kontrolera widoku w edytorze asystenta Playground za pomocą View▸ Assistant Editor▸Show Assistant Editor
źródło
Swift 5.1.2
// Fixed Space let fixedSpace: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) fixedSpace.width = 20.0 // Flexible Space let flexibleSpace: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
źródło
W Swift:
let fixedSpace = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) fixedSpace.width = 20.0
źródło