2014-10-21 42 views

cevap

15

DÜZENLEME: BT bütün bu çözüm çalışması gerekir sonra ben

UIImage *selTab = [[UIImage imageNamed:@"tabHighlight"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
CGSize tabSize = CGSizeMake(CGRectGetWidth(self.view.frame)/5, 49); 
UIGraphicsBeginImageContext(tabSize); 
[selTab drawInRect:CGRectMake(0, 0, tabSize.width, tabSize.height)]; 
UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
// 
[self.tabBar setSelectionIndicatorImage:reSizeImage]; 

tabHiglight 82x49 bir png önbelleği ile bazı sorunlar vardı görünüyor, ben ile test ettik diğer boyutlar ama bu en uygun gibi görünüyor. Çerçevenin width çerçevesini tabBar'da sahip olduğum öğe sayısına böldüm - benim durumumda 5, sonra "doğru" boyutta yeni bir UIImage oluşturup onu selectionIndicatorImage olarak ayarladım.

+2

kullandığım 2x ve 3x cihazları desteklemek için: UIGraphicsBeginImageContextWithOptions (tabSize, NO, [UIScreen mainScreen] .scale); – AlexD

1

Otomatik ayarlamalı UITabBarController alt sınıfım. Sadece bir görüntü sağlayın ve bilinen tüm iPhone'lara ve iPad'lere ayarlanacaktır. Ayrıca, özellik koleksiyonunun her değiştiğinde boyutu güncelleyecektir, böylece tüm yeni iPad özelliklerini ve rotasyonunu destekler.

import UIKit 

class TabBarController: UITabBarController { 
    override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 

     updateSelectionIndicatorImage() 
    } 

    override func traitCollectionDidChange(previousTraitCollection: UITraitCollection?) { 
     super.traitCollectionDidChange(previousTraitCollection) 

     updateSelectionIndicatorImage() 
    } 

    func updateSelectionIndicatorImage() { 
     let width = CGRectGetWidth(tabBar.bounds) > 420 ? 420 : CGRectGetWidth(tabBar.bounds) 
     var selectionImage = UIImage(named: "TabSelectionIndicator") 
     let tabSize = CGSizeMake(width/5, 49) 

     UIGraphicsBeginImageContext(tabSize) 
     selectionImage?.drawInRect(CGRectMake(0, 0, tabSize.width, tabSize.height)) 
     selectionImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     tabBar.selectionIndicatorImage = selectionImage 
    } 
} 
İlgili konular