:私は意図的に通常大きすぎる画像を使用して、私のタブバーの中心部にタブバーに着色UIImageの周りにある色の境界線を描画し、私は私の目標の短い説明を開始します私の問題を理解するために
を(タブバーの背景色は白です)、タブバーの上端に重ねて表示されます(タブバーの背景色は白です)。 UITabBarItem
のデフォルト色は明るい灰色です(明らかにUIColor.lightGray
でも.darkGray
もありません)。UITabBarItem
の色を変更したいと思います(またはこれを考慮した画像が唯一のものです)。白にこのUITabBarItem
)の見た私は、正常に動作し、次の拡張機能/機能を使用しました:画像の色合いの色とタブバーの背景色の両方として
extension UIImage {
func tabBarImageWithCustomTint(tintColor: UIColor) -> UIImage {
UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
let context: CGContext = UIGraphicsGetCurrentContext()!
context.translateBy(x: 0, y: self.size.height)
context.scaleBy(x: 1.0, y: -1.0)
context.setBlendMode(CGBlendMode(rawValue: 1)!)
let rect: CGRect = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)
context.clip(to: rect, mask: self.cgImage!)
tintColor.setFill()
context.fill(rect)
var newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
newImage = newImage.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
return newImage
}
}
Link to question where I found this extension
は白ですに赤色のボーダーを追加して、今度は白いイメージに追加したいと考えています。
extension UIImage {
func roundedImageWithBorder(width: CGFloat, color: UIColor) -> UIImage? {
let square = CGSize(width: min(size.width, size.height) + width * 2, height: min(size.width, size.height) + width * 2)
let imageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: square))
imageView.contentMode = .center
imageView.image = self
imageView.layer.cornerRadius = square.width/2
imageView.layer.masksToBounds = true
imageView.layer.borderWidth = width
imageView.layer.borderColor = color.cgColor
UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, false, scale)
guard let context = UIGraphicsGetCurrentContext() else { return nil }
imageView.layer.render(in: context)
let result = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return result
}
}
私の問題:幸いにも、私は(それがUIImage
との国境の間に非常に小さなスペースを残しているので、私は、私はこの拡張子を持つ完全コンテンツではないだということを追加する必要がありますが)、この質問に答え、別のquestion on stackoverflowを見つけることができました私はこのような連続関数を使用する場合は、今ある...:
let tabRecordButton = UIImage(named: "circle").tabBarImageWithCustomTint(tintColor: .white).roundedImageWithBorder(width: 1, color: .red)
...ではなく、さらにボーダー(国境が描かですがUITabBarItem
の色合いの色は、このデフォルトのグレーに戻り、上述行きます赤い)。
私の質問:私は両方のことができる方法がありますか?つまり、画像の色を白にし、赤色を私のUITabBar
に入れますか?
は完璧な理にかなって!ありがとう、ありがとう! – Moritz