当前位置 : 主页 > 手机开发 > ios >

ios – 自定义标签栏项目背景图像的正确尺寸是多少?

来源:互联网 收集:自由互联 发布时间:2021-06-11
所以我的.png是428×176像素: 当项目处于选定状态时,我想将其用作标签栏背景图像.问题是图像太大了.所以现在,我正在探索不同的分辨率后缀:@ 1x,@ 2x,@ 3x.但无论我附加到图像文件名,图
所以我的.png是428×176像素:

enter image description here

当项目处于选定状态时,我想将其用作标签栏背景图像.问题是图像太大了.所以现在,我正在探索不同的分辨率后缀:@ 1x,@ 2x,@ 3x.但无论我附加到图像文件名,图像对于标签栏项目的背景仍然太大,尽管随着我增加分辨率因子它会变小.如何确定此图像的正确尺寸?

请记住,这是任何特定UITabBarItem处于选定状态时的背景图像.它意味着UITabBarItem的整个宽度和高度.我的标签栏将在屏幕的宽度上放置三个项目.

更新:

很多答案都提供了基于swift的解决方案,但我要求的是我的图像应该以像素为单位的尺寸,换句话说,我应该在包中包含什么尺寸的图像,以便图像适合于所有屏幕尺寸的标签栏.我想,因为UITabBar默认需要一个UIImage作为其selectionIndicatorImage字段而不是UIImageView,必须有一个解决方案,不涉及黑客攻击UITabBar并添加UIImageView作为它的子视图并管理图像视图的位置应该根据当前选择的UITabBarItem手动进入.

我将这个问题的答案作为参考 how to make UITabBar selection indicator image fill the whole space?作为参考:

UITabBarController的子类

即使旋转,它也适用于多个设备.

笔记:

>使图像的渲染模式为原始模式.
>如果您以编程方式执行屏幕,请将以下类分配给Storyboard中的UITabBarController或基类.

//
//  BaseTabBarController.swift
//  MyApp
//
//  Created by DRC on 1/27/17.
//  Copyright © 2017 PrettyITGirl. All rights reserved.
//

import UIKit

class BaseTabBarController: UITabBarController {

    let numberOfTabs: CGFloat = 4
    let tabBarHeight: CGFloat = 60

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        updateSelectionIndicatorImage()
    }

    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()

        updateSelectionIndicatorImage()
    }

    func updateSelectionIndicatorImage() {
        let width = tabBar.bounds.width
        var selectionImage = UIImage(named:"myimage.png")
        let tabSize = CGSize(width: width/numberOfTabs, height: tabBarHeight)

        UIGraphicsBeginImageContext(tabSize)
        selectionImage?.draw(in: CGRect(x: 0, y: 0, width: tabSize.width, height: tabSize.height))
        selectionImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        tabBar.selectionIndicatorImage = selectionImage
    }

}
网友评论