web-dev-qa-db-ja.com

UITabBarの上部の境界線を変更するにはどうすればよいですか?

UITabBarの上部の幅を5.0にしたいのですが。ボーダーは黄色でなければなりません。左/下/右の境界線は必要ありません。

タブバーの境界線は平らである必要があります(影などはありません)。

影(画像)ラインを削除するにはどうすればよいですか?

16
TIMEX

FirstViewController.Swiftで次のようにできます。

self.tabBarController!.tabBar.layer.borderWidth = 0.50
self.tabBarController!.tabBar.layer.borderColor = UIColor.clearColor().CGColor
self.tabBarController?.tabBar.clipsToBounds = true

結果は次のようになります。

前:

enter image description here

後:

enter image description here

それが役に立てば幸い。

編集:

この方法で背景画像を設定できます:

UITabBar.appearance().backgroundImage = UIImage(named: "yourImageWithTopYellowBorder.png")
33
Dharmesh

これは、さまざまなSO回答でコンパイルされた完全なソリューションであり、私のために働いた(Swift):

// The tabBar top border is done using the `shadowImage` and `backgroundImage` properties.
// We need to override those properties to set the custom top border.
// Setting the `backgroundImage` to an empty image to remove the default border.
tabBar.backgroundImage = UIImage()
// The `shadowImage` property is the one that we will use to set the custom top border.
// We will create the `UIImage` of 1x5 points size filled with the red color and assign it to the `shadowImage` property.
// This image then will get repeated and create the red top border of 5 points width.

// A helper function that creates an image of the given size filled with the given color.
// http://stackoverflow.com/a/39604716/1300959
func getImageWithColor(color: UIColor, size: CGSize) -> UIImage
{
    let rect = CGRect(Origin: CGPoint(x: 0, y: 0), size: CGSize(width: size.width, height: size.height))
    UIGraphicsBeginImageContextWithOptions(size, false, 0)
    color.setFill()
    UIRectFill(rect)
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    return image
}

// Setting the `shadowImage` property to the `UIImage` 1x5 red.
tabBar.shadowImage = getImageWithColor(color: UIColor.red, size: CGSize(width: 1.0, height: 5.0))
5
iurii

タブバーを完全に削除する場合は、これをAppDelegateに追加します。

UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().backgroundImage = UIImage()
4
James

Swift

アプリの他の要素と一致させるために境界線の色(および線の色と太さ)が必要だったため、カスタムUITabBarControllerのviewDidLoadでこれが機能しました。

tabBar.layer.borderWidth = 0.3
tabBar.layer.borderColor = UIColor(red:0.0/255.0, green:0.0/255.0, blue:0.0/255.0, alpha:0.2).cgColor
tabBar.clipsToBounds = true
3
A.J. Hernandez
    UIView *borderLine = [[UIView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, 5.0)];
    borderLine.backgroundColor = [UIColor yellowColor];  
    [self.tabBarController.tabBar addSubview:borderLine];

これは、私が従うUITabBarにボーダーを追加する方法です。かっこいいです。

2
ABHILASH P

これは私がそれを成し遂げる方法です。 UITabBarの上にサブビューを追加しました。

var lineView = UIView(frame: CGRect(x: 0, y: 0, width:tabBarController.tabBar.frame.size.width, height: 1))
lineView.backgroundColor = UIColor.yellow
tabBarController.tabBar.addSubview(lineView)
1
Udaya Sri

UITabBar backgroundImageとshadowImageをクリアカラーに設定するだけです:

tabBar.shadowImage = UIImage.init(color: UIColor.clear)
tabBar.backgroundImage = UIImage.init(color: UIColor.clear)
0
evya

IOS 6で導入されたshadowImageという名前のプロパティがあります。これを変更して、上部の境界線を変更できます。たとえば、単一色の1x1px画像を使用して、上部の境界線をその色に変更できます。

_UITabBar.appearance().shadowImage = UIImage(named: "TabBarShadow")
_

UIImage()として設定して、上部の境界線を完全に削除することもできます。

_UITabBar.appearance().shadowImage = UIImage()
_

5px境界線の質問に答えるには、1x5px画像を使用してこれを行うことができます。画像のサイズに制限はないようで、繰り返します(たとえば、最初の2x5pxが黒で次の2x5pxが透明である4x5px画像を作成すると、点線になります)。これを使用する場合、UITabBarの境界外にあるため、ビューの境界を変更しない限り、コンテンツは画像の背後に移動することに注意してください。

0
Ben Dodson

これは、タブバーの影の画像(プロパティ)です。次の解決策を試してみてください。

** Swift **

//Remove shadow image by assigning nil value.
UITabBar.appearance().shadowImage = nil

// or 

// Assing UIImage instance without image reference
UITabBar.appearance().shadowImage = UIImage()

** Objective-C **

//Remove shadow image by assigning nil value.
[[UITabBar appearance] setShadowImage: nil];

// or 

// Assing UIImage instance without image reference
[[UITabBar appearance] setShadowImage: [[UIImage alloc] init]];


こちらはApple shadowImage のガイドラインです。

@available(iOS 6.0, *)
open var shadowImage: UIImage?

デフォルトはnilです。非nilの場合、デフォルトの影画像の代わりに表示するカスタム影画像。カスタムシャドウを表示するには、カスタムバックグラウンドイメージも-setBackgroundImage:で設定する必要があります(デフォルトのバックグラウンドイメージを使用する場合は、デフォルトのシャドウイメージが使用されます)。

0
Krunal