Ich möchte UIBarButtonItems
programmgesteuert erstellen und diese festen Speicherplatz Elemente zwischen Schaltflächen platzieren.So erstellen Sie programmgesteuert Fixpunkt- und flexible Leertaste-Schaltflächenelemente?
Antwort
UIBarButtonItem *fixedItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
fixedItem.width = 20.0f; // or whatever you want
UIBarButtonItem *flexibleItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
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];
Warum setzen Sie * right * bar button Elemente auf * left * Elemente? Das ist nur ein wirklich schlechter Stil oder ein Bug und ich weiß nicht was. –
In 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];
Vergessen Sie nicht, die Aktionen für jede Taste auch (in diesem Beispiel ein UIWebView):
-(void)goBack
{
[_webView goBack];
}
-(void)goForward
{
[_webView goForward];
}
usw.
Swift
// 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)
Mit Swift 3, UIBarButtonItem
hat einen Initialisierer genannt init(barButtonSystemItem:target:action:)
. init(barButtonSystemItem:target:action:)
hat die folgende Erklärung ab:
convenience init(barButtonSystemItem systemItem: UIBarButtonSystemItem, target: Any?, action: Selector?)
Initialisiert ein neues Element die angegebene System Artikel enthält.
UIBarButtonSystemItem
ist eine Aufzählung, die viele Fälle einschließlich done
, play
, add
oder cancel
bietet. Je nach Bedarf können Sie jedoch auch flexibleSpace
oder fixedSpace
Fälle auswählen.
flexibleSpace
Fall hat die folgende Erklärung ab:
Leerzeichen zwischen anderen Elemente hinzuzufügen. Der Raum ist gleichmäßig auf die anderen Objekte verteilt. Andere Elementeigenschaften werden ignoriert, wenn dieser Wert festgelegt wird.
fixedSpace
Fall hat die folgende Erklärung ab:
Leerzeichen zwischen anderen Elemente hinzuzufügen. Nur die
width
Eigenschaft wird verwendet, wenn dieser Wert festgelegt ist.
Daher können Sie feste und flexible Leertaste Taste, um Elemente programmatisch erstellen, wie unten dargestellt:
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
Als Beispiel der Spielplatz Code unten zeigt wie man einen unteren Balken mit zwei zentrierten Play- und Pause-Button-Elementen hinzufügt, die durch einen festen Abstand von 30 in einem vi getrennt sind ew Controller:
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
Vorschau Ihre View-Controller im Editor Spielplatz Assistent mit Ansicht ▸ Assistant Editor ▸ anzeigen Assistant Editor
- 1. So erstellen Sie DrawerLayout programmgesteuert
- 2. So erstellen Sie programmgesteuert Azure AlertRule
- 3. So erstellen Sie einen Zugriffspunkt programmgesteuert
- 4. So erstellen Sie ein UIButton programmgesteuert
- 5. So erstellen Sie Benachrichtigungs-Hub-Tags programmgesteuert?
- 6. Erstellen Sie ListView programmgesteuert
- 7. Erstellen Sie TableLayout programmgesteuert
- 8. So öffnen Sie programmgesteuert
- 9. Erstellen Sie Kategorien und mehrere Unterkategorien programmgesteuert
- 10. Verwenden Sie Zend Framework, um eine flexible Basisanwendung zu erstellen
- 11. So erstellen Sie Word-Dokumente programmgesteuert aus einer Vorlage
- 12. So erstellen Sie ein UIImage programmgesteuert mit Inhalt
- 13. Resizable und flexible Eingabeform
- 14. So erstellen Sie programmgesteuert eine Verknüpfung mit Win32
- 15. So importieren oder erstellen Sie eine Seitenvorlage programmgesteuert
- 16. Sichere und flexible domänenübergreifende Sitzungen
- 17. Flexible Formulare und unterstützende Datenbankstruktur
- 18. Flexible eCommerce und soziale Netzwerklösung
- 19. Flexible CountDownLatch?
- 20. So starten Sie eine Android-Anwendung programmgesteuert
- 21. UEFI So ändern Sie die Startreihenfolge programmgesteuert
- 22. Convert Fixpunkt unterzeichnet
- 23. Programmgesteuert Erstellen Sie eine benutzerdefinierte MSBuild .Zieldatei
- 24. So erstellen und veröffentlichen Sie einen Index mithilfe des Java-Clients programmgesteuert
- 25. Mocha: Erstellen und finalisieren Sie den Test programmgesteuert
- 26. So starten/stoppen Sie Standardwebsite und Anwendungspools in IIS7 programmgesteuert
- 27. Flexible CSS-Schaltfläche (variable Breite und Markup)
- 28. Erstellen Sie einen Spinner programmgesteuert Android
- 29. So installieren Sie eine Chrome-Erweiterung programmgesteuert?
Beachten Sie, dass die festlegen Breite eines UIBarButtonItems mit festem Platz müssen Sie die '.width'-Eigenschaft festlegen. –
perfekte Antwort! –
Wie können wir flexible Breite haben geben Sie gleiche Abstände zwischen allen Tasten mit Code? Ich möchte nicht hart codieren width = 20.0 – Satyam