[iphone] UITabBarItem 이미지를 아래로 이동 하시겠습니까?

일반적으로의 각 탭 UITabBar에는 탭 이름을 지정하는 작은 이미지와 제목이 있습니다. 이미지는 아래의 제목을 수용하기 위해 탭의 상단을 향해 위치 / 중앙에 배치됩니다. 내 질문은 : 이미지 만있는 tabBar를 원하고 제목이없는 경우 이미지를 아래로 이동하여 탭 내에서 더 중앙에 위치하도록하는 방법이 있습니까?

현재 사용 중입니다 (아래 참조).

[tabBarItem setFinishedSelectedImage:tabSelected withFinishedUnselectedImage:tabUnselected];

그러나 제목이없는 더 큰 이미지를 사용하는 것을 선호합니다. 현재 이미지를 약 70pixels @ 2x보다 크게 만들면 UITabBar아래쪽에 사용되지 않은 공간이 많이 남는 동안 위쪽에서 가장자리가 튀어 나오기 시작합니다 .



답변

조정 해보십시오 tabBarItem‘들 imageInsets과 (어떤 제목이 표시되지 않도록) 전무에 컨트롤러 제목을 설정 (아이콘 이미지를 이동). 뷰 컨트롤러에 다음과 같이 -init또는 -viewDidLoad메소드 를 넣으십시오 .

목표 -C

self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
self.title = nil;

빠른

self.tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
self.title = nil

UITabBarItem의 서브 UIBarItem갖는 UIEdgeInsets imageInsets속성. 보기 좋게 보일 때까지 삽입물로 약간 재생 (탭바 아이콘 이미지에 따라 다름)


답변

스토리 보드를 통해서도 할 수 있습니다. 탭바 항목을 선택하고 크기 검사기로 이동하여 적절한 삽입물을 지정하십시오.

여기에 이미지 설명 입력

* Xcode 버전 7.3.1 (7D1014)에서 시연


답변

의 하위 클래스를 만들고 UITabBarController그 안에 viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.viewControllers enumerateObjectsUsingBlock:^(UIViewController *vc, NSUInteger idx, BOOL *stop) {
        vc.tabBarItem.title = nil;
        vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0);
    }];
}

스위프트 3 :

for vc in self.viewControllers! {
    vc.tabBarItem.title = nil
    vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}


답변

Xamarin을 사용하는 경우 다음과 같이 작동합니다.

screen.TabBarItem.ImageInsets = new UIEdgeInsets(5, 0, -5, 0);
screen.TabBarItem.Title = "";


답변

이것은 나를 위해 일했습니다.

스위프트 4

let array = tabBarController?.customizableViewControllers
for controller in array! {
    controller.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}


답변

SWIFT 3.0

이미지 lnsets, set top, left, bottom, right desing에 따라 설정할 수 있습니다.

self.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)


답변

iOS 11의 경우 ImageInsets 설정과 별도로 TraitCollection 메서드 를 재정의해야합니다 . 서브 클래 싱 된 UITabBarController 클래스에 메소드를 추가하십시오.

public override UITraitCollection TraitCollection {
 get {
  return UITraitCollection.FromHorizontalSizeClass(horizontalSizeClass: UIUserInterfaceSizeClass.Compact);
 }
}