고정 공간 및 유연한 스페이스 바 버튼 항목을 프로그래밍 방식으로 생성하는 방법은 무엇입니까?
생성할 항목UIBarButtonItems
프로그래밍 방식으로 버튼 사이에 고정된 공간 항목을 배치합니다.
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];
스위프트
// 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)
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];
이 글을 쓰는 시점에서 iOS 14 이상을 대상으로 한다면, 해당 클래스 함수를 사용하여 고정되고 유연한 공간 항목을 보다 간결하게 얻을 수 있습니다.
let fixedSpace = UIBarButtonItem.fixedSpace(20)
let flexibleSpace = UIBarButtonItem.flexibleSpace()
Swift에서:
let fixedSpace = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
fixedSpace.width = 20.0
스위프트 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)
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];
각 버튼에 대한 작업(이 예에서는 UI WebView)도 잊지 마십시오.
-(void)goBack
{
[_webView goBack];
}
-(void)goForward
{
[_webView goForward];
}
기타.
스위프트 3과 함께라면,UIBarButtonItem
에는 이라는 이니셜라이저가 있습니다.init(barButtonSystemItem:target:action:)
에는 다음과 같은 선언이 있습니다.
convenience init(barButtonSystemItem systemItem: UIBarButtonSystemItem, target: Any?, action: Selector?)
지정한 시스템 항목을 포함하는 새 항목을 초기화합니다.
UIBarButtonSystemItem
다음과 같은 많은 사례를 제공하는 열거형입니다.done
,play
,add
또는cancel
하지만, 당신의 필요에 따라, 당신은 또한 선택할 수 있습니다.flexibleSpace
또는fixedSpace
경우들.
flexibleSpace
case에는 다음과 같은 선언이 있습니다.
다른 항목 사이에 추가할 공백입니다.공간이 다른 항목들 사이에 균등하게 분포되어 있습니다.이 값을 설정하면 다른 항목 속성이 무시됩니다.
fixedSpace
case에는 다음과 같은 선언이 있습니다.
다른 항목 사이에 추가할 공백입니다.오직 그
width
속성은 이 값을 설정할 때 사용됩니다.
따라서 아래와 같이 고정되고 유연한 스페이스 바 단추 항목을 프로그래밍 방식으로 생성할 수 있습니다.
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
예를 들어 아래의 플레이그라운드 코드는 보기 컨트롤러에서 중앙에 있는 두 개의 재생 및 일시 중지 막대 단추 항목을 30개의 고정 공간으로 구분하여 아래쪽 막대를 추가하는 방법을 보여줍니다.
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
▸▸를 사용하여 Playground Assistant 편집기에서 뷰 컨트롤러 미리 보기
언급URL : https://stackoverflow.com/questions/3663058/how-to-create-fixed-space-and-flexible-space-bar-button-items-programmatically
'programing' 카테고리의 다른 글
Dapper를 사용하여 C# List를 데이터베이스에 삽입하는 방법그물 (0) | 2023.05.02 |
---|---|
삼면의 경계 (0) | 2023.05.02 |
파이어폭스를 파이썬으로 셀레늄에서 프로그래밍 방식으로 헤드리스로 만드는 방법은 무엇입니까? (0) | 2023.05.02 |
bash로 인터넷 연결을 테스트하는 방법은 무엇입니까? (0) | 2023.05.02 |
C#에서 줄 바꿈을 추가하는 방법.NET 문서 (0) | 2023.05.02 |