iOS UITabBar选择指示图像Y位置

iOS UITabBar选择指示图像Y位置,ios,swift,Ios,Swift,我有这个规格: 但是,我有这个: 我有以下代码: self.mTabBar.selectionIndicatorImage = UIImage(named: "footer-blue-line") 如何设置选择指示图像的Y位置?为什么不使用一个下方有蓝线的“选定”图像? 使用“页脚蓝线”位置链接上给出的图像。在这里。您只需在interface builder中将选项卡栏的类设置为此类 class MyCustomTabBar: UITabBar { var didInit = fa

我有这个规格:

但是,我有这个:

我有以下代码:

self.mTabBar.selectionIndicatorImage = UIImage(named: "footer-blue-line")

如何设置
选择指示图像的Y位置?

为什么不使用一个下方有蓝线的“选定”图像?


使用“页脚蓝线”位置链接上给出的图像。

在这里。您只需在interface builder中将选项卡栏的类设置为此类

class MyCustomTabBar: UITabBar
{
    var didInit = false
    override func layoutSubviews()
    {
        super.layoutSubviews()

        if didInit == false
        {
            didInit = true
            for subview in subviews {
                // can't hookup to subviews, so do layer.sublayers
                subview.layer.addObserver(self, forKeyPath: "sublayers", options: .New, context: nil)
            }
        }
    }

    deinit
    {
        for subview in subviews
        {
            subview.layer.removeObserver(self, forKeyPath: "sublayers")
        }
    }

    override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>)
    {
        // layer.delegate is usually the parent view
        if let l = object as? CALayer, tbButton = l.delegate as? UIView where tbButton.window != nil
        {
            for v in tbButton.subviews
            {
                if String(v.dynamicType) == "UITabBarSelectionIndicatorView" {
                    v.setYOrigin(3)
                }
            }
        }
    }
}
类MyCustomTabBar:UITabBar
{
var didInit=false
覆盖func布局子视图()
{
super.layoutSubviews()
如果didInit==false
{
didInit=true
用于子视图中的子视图{
//无法连接到子视图,layer.sublayers也是如此
subview.layer.addObserver(self,forKeyPath:“子层”,选项:。新建,上下文:nil)
}
}
}
脱硝
{
用于子视图中的子视图
{
subview.layer.removeObserver(self,forKeyPath:“子层”)
}
}
重写func observeValueForKeyPath(键路径:String?,对象对象的类型:AnyObject?,更改:[String:AnyObject]?,上下文:UnsafeMutablePointer)
{
//layer.delegate通常是父视图
如果让l=对象作为CALayer,tbButton=l.delegate作为UIView,其中tbButton.window!=nil
{
对于tbButton.subview中的v
{
如果字符串(v.dynamicType)=“UITabBarSelectionIndicatorView”{
v、 setYOrigin(3)
}
}
}
}
}

只需创建一个高达44px的图像,并将背景设置为透明,将底部的黑色线条部分设置为黑色,然后设置该图像,它将创建与第一个图像相同的效果。这个问题似乎发生在iPhone X中,选择指示器图像视图在选项卡栏顶部和屏幕底部之间有一个垂直中心约束(在
安全区域之外
),再次。正确的高度解决方案现在不起作用。实际上,我只有两个图像。我正在尝试使用它。如果没有解决方案,我将使用另一个图像