UI 탭 표시줄 항목 이미지를 아래로 이동하시겠습니까?
일반적으로 의 각 탭에서UITabBar
탭 이름을 지정하는 작은 이미지와 제목이 있습니다.이미지는 아래의 제목에 맞게 탭 상단을 향해 배치/중심을 맞춥니다.제 질문은 만약 당신이 이미지만 있고 제목이 없는 탭바를 갖고 싶다면, 이미지를 아래로 이동하여 탭 내에서 더 잘 중앙에 배치할 수 있는 방법이 없을까요?
현재 사용 중입니다(아래 참조).
[tabBarItem setFinishedSelectedImage:tabSelected withFinishedUnselectedImage:tabUnselected];
하지만 제목이 없는 더 큰 이미지를 사용하는 것을 선호합니다. 만약 제가 이미지를 약 70픽셀@2배 이상 크게 만든다면 그것은 상단에서 조금씩 떨어지기 시작합니다.UITabBar
바닥에 사용하지 않은 공간을 많이 남겨두면서.
조정해 보십시오.tabBarItem
의imageInsets
(아이콘 이미지 이동용) 및 컨트롤러 제목을 0으로 설정합니다(제목이 표시되지 않음).이와 같은 것을.-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
소유물.모양이 좋을 때까지 삽입물을 약간 재생합니다(탭바 아이콘 이미지에 따라 다름).
iPad 관련 조정
iPad의 탭 표시줄 항목은 수평으로 분포합니다(아이콘과 레이블이 서로 옆에 있음).
아이콘과 레이블 사이의 공간을 조정하려면 수평으로 조정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)
}
이것은 나에게 효과가 있었습니다.
스위프트 4
let array = tabBarController?.customizableViewControllers
for controller in array! {
controller.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}
Xamarin을 사용하는 경우 다음과 같이 작동합니다.
screen.TabBarItem.ImageInsets = new UIEdgeInsets(5, 0, -5, 0);
screen.TabBarItem.Title = "";
SWIFT 3.0
디자인에 따라 이미지 lnset을 설정하고 상단, 좌측, 하단 및 우측을 설정할 수 있습니다.
self.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)
iOS 11의 경우 이미지 설정과 별개로 특성 수집 방법을 재정의해야 합니다.삽입합니다. 하위 클래스의 UITabBarController 클래스에 메서드를 추가하십시오.
public override UITraitCollection TraitCollection {
get {
return UITraitCollection.FromHorizontalSizeClass(horizontalSizeClass: UIUserInterfaceSizeClass.Compact);
}
}
Swift 4.2에서는UIEdgeInsetsMake
감소되었습니다. 대신에 우리는 사용해야 합니다.UIEdgeInsets
,
let array = tabBarController?.customizableViewControllers
for controller in array! {
controller.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: -5, right: 0)
}
이것들은 저에게 효과가 없었습니다. 유일한 해결책은 이미지를 추가할 때 AlignmentRectInsets를 설정하는 것이었습니다.제 것은 다음과 같습니다.
let newsView = NewsViewController()
let newsIcon = UITabBarItem(title: nil, image: UIImage(systemName: "newspaper")?.withAlignmentRectInsets(UIEdgeInsets(top: 8.5, left: 0, bottom: -8.5, right: 0)), tag: 0)
newsView.tabBarItem = newsIcon
let viewControllers = [newsNavController]
self.viewControllers = viewControllers
2021년 오브젝티브-C
모든 방법을 시도해 보았지만 아무도 일하지 않았습니다.결국 저는 그것이 SF 심볼을 탭바 아이템 이미지로 사용했기 때문이라는 것을 알게 되었습니다.커스텀 이미지로 교체하면 문제가 해결됩니다.
NSArray *tabItems = [self.tabBar items];
// set tabItem icon, remove blue image with render mode set.
UIImage *image1 = [[UIImage imageNamed:@"myIcon"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
// set title offset
[tabItems[0] setTitlePositionAdjustment:UIOffsetMake(0, 20)];
[tabItems[1] setTitlePositionAdjustment:UIOffsetMake(-20, 20)];
[tabItems[2] setTitlePositionAdjustment:UIOffsetMake(20, 20)];
[tabItems[3] setTitlePositionAdjustment:UIOffsetMake(0, 20)];
// set image offset
[tabItems[0] setImageInsets:UIEdgeInsetsMake(0, 0, -30, 0)];
...
@2x의 경우 50x50px, @3x의 경우 75x75px의 경우 이미지 해상도를 사용합니다.
//On tabbar viewDidload
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
tabBar.items![0].imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
}
언급URL : https://stackoverflow.com/questions/16285205/moving-uitabbaritem-image-down
'programing' 카테고리의 다른 글
오라클에서 열의 데이터 유형 변경 (0) | 2023.06.11 |
---|---|
Twiny를 사용할 때 Python Matplotlib 그림 제목이 축 레이블과 겹칩니다. (0) | 2023.06.11 |
백분율 계산 (0) | 2023.06.11 |
Visual Studio Code에서 Python용 가상 환경을 설정하려면 어떻게 해야 합니까? (0) | 2023.06.11 |
gcc의 on-function-section 및 -f 데이터-section 옵션 쿼리 (0) | 2023.06.11 |