2015-09-19 22 views
5

'da alt çizgi nasıl eklenir UITabbarItem'da alt çizgi eklemem gereken bir uygulamada çalışıyorum.iOS: UITabBarItem

Bu yüzden, iOS'un Varsayılan UITabbarcontroller numaralı UITabbarItem altına alt çizgi eklemek istiyorum.

Zaten UITabbarcontroller alt sınıfını oluşturdum ancak buna satır eklemenin bir yolunu bulamadım.

Görselin altında bir şey yapmak istiyorum.

UITabbarWithUnderline Image

bu burada paylaşmak için lütfen herkes bir fikrin varsa.

cevap

9

bu bir deneyin. Uygulamamda bir kez kullandım ve umarım size yardımcı olur.

 UITabBarController *tab = [[UITabBarController alloc]init]; 
     ViewController1 *v1 = [[ViewController1 alloc]init]; 
     ViewController1 *v2 = [[ViewController1 alloc]init]; 
     ViewController1 *v3 = [[ViewController1 alloc]init]; 
     ViewController1 *v4 = [[ViewController1 alloc]init]; 

     tab.viewControllers = [NSArray 
arrayWithObjects:v1,v2,v3,v4,nil]; 

     [[tab.tabBar.items objectAtIndex:0]setImage:[UIImage imageNamed:@""]]; 
     [[tab.tabBar.items objectAtIndex:1]setImage:[UIImage imageNamed:@""]]; 
     [[tab.tabBar.items objectAtIndex:2]setImage:[UIImage imageNamed:@""]]; 
     [[tab.tabBar.items objectAtIndex:3]setImage:[UIImage imageNamed:@""]]; 
     int divide = 4; 
     if([UIDevice currentDevice].userInterfaceIdiom ==UIUserInterfaceIdiomPad) 
      divide =6; 
     } 
     UIView *view = [[UIView alloc]initWithFrame:CGRectMake(tab.tabBar.frame.origin.x,tab.tabBar.frame.origin.y, self.view.frame.size.width/divide, 56)]; 

     UIImageView *border = [[UIImageView alloc]initWithFrame:CGRectMake(view.frame.origin.x,view.frame.size.height-6, self.view.frame.size.width/divide, 6)]; 
     border.backgroundColor = “your color”; 
     [view addSubview:border]; 
     [tab.tabBar setSelectionIndicatorImage:[self changeViewToImage:view]]; 

//This is the method that will draw the underline 
-(UIImage) changeViewToImage : (UIView) viewForImage { 
     UIGraphicsBeginImageContext(viewForImage.bounds.size); 
     [viewForImage.layer renderInContext:UIGraphicsGetCurrentContext()]; 
     UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
     return img; 
} 
+0

Bu kod ipad için de çalıştı ... (y) –

-1

kullanın bu kod sadece UITabbarItem nesne ile view yerine, herhangi UIView nesneye bir alt kenarlık eklemek:

CALayer *bottomBorder = [CALayer layer]; 
bottomBorder.frame = CGRectMake(0, view.frame.size.height - 1, view.frame.size.width - 1, 1); 
bottomBorder.backgroundColor = [UIColor lightGrayColor].CGColor; 
[view.layer addSublayer:bottomBorder]; 
+0

Bu çözümü kendiniz kontrol ettiniz mi? “UITabBarItem”, UIView'den miras almaz ve “layer” özelliğine sahip değildir. – Eimantas

4

Sadece AppDelegate içine bu kodu yerleştirin:

Bu programlı Tab çubuğu oluşturduk nasıl. UITabBar

için AppDelegate didFininshLaunch Yöntemi ekleyin Dünya In Style
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
// Override point for customization after application launch. 

UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake([UITabBar appearance].frame.origin.x,[UITabBar appearance].frame.origin.y, [[UIScreen mainScreen] bounds].size.width/3, 56)]; 

UIImageView *border = [[UIImageView alloc]initWithFrame:CGRectMake(view1.frame.origin.x,view1.frame.size.height-6, [[UIScreen mainScreen] bounds].size.width/3, 6)]; 
border.backgroundColor = [UIColor colorWithRed:255.0f/255.0f green:105.0f/255.0f blue:84.0f/255.0f alpha:1.0f]; 
[view1 addSubview:border]; 
UIImage *img=[self ChangeViewToImage:view1]; 
[[UITabBar appearance] setSelectionIndicatorImage:img]; 
[[UITabBar appearance] setTintColor: [UIColor colorWithRed:255.0f/255.0f green:105.0f/255.0f blue:84.0f/255.0f alpha:1.0f]]; 

return YES; 
} 
-(UIImage *) ChangeViewToImage : (UIView *) viewForImage 
{ 
UIGraphicsBeginImageContext(viewForImage.bounds.size); 
[viewForImage.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return img; 
} 
4

UITabBar.appearance().selectionIndicatorImage = UIImage.getImageWithColorPosition(UIColor.whiteColor(), size: CGSizeMake(kScreenWidth/4, 49), lineSize: CGSizeMake(kScreenWidth/4, 2)) 

class func getImageWithColorPosition(color: UIColor, size: CGSize, lineSize: CGSize) -> UIImage { 
    let rect = CGRectMake(0, 0, size.width, size.height) 
    let rectLine = CGRectMake(0, size.height-lineSize.height, lineSize.width, lineSize.height) 
    UIGraphicsBeginImageContextWithOptions(size, false, 0) 
    UIColor.clearColor().setFill() 
    UIRectFill(rect) 
    color.setFill() 
    UIRectFill(rectLine) 
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    return image 
} 

DÜZENLEME Swift 3

func getImageWithColorPosition(color: UIColor, size: CGSize, lineSize: CGSize) -> UIImage { 

    let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height) 
    let rectLine = CGRect(x: 0, y: size.height-lineSize.height, width: lineSize.width, height: lineSize.height) 
    UIGraphicsBeginImageContextWithOptions(size, false, 0) 
    UIColor.clear.setFill() 
    UIRectFill(rect) 
    color.setFill() 
    UIRectFill(rectLine) 
    let image = UIGraphicsGetImageFromCurrentImageContext()! 
    UIGraphicsEndImageContext() 
    return image 
} 
5

Kod Swift 3 didFininshLaunch çağrı yönteminde

için:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
     // Override point for customization after application launch. 
     UITabBar.appearance().selectionIndicatorImage = getImageWithColorPosition(color: UIColor.blue, size: CGSize(width:(self.window?.frame.size.width)!/4,height: 49), lineSize: CGSize(width:(self.window?.frame.size.width)!/4, height:2)) 
     return true 
    } 

Yöntem:

func getImageWithColorPosition(color: UIColor, size: CGSize, lineSize: CGSize) -> UIImage { 
     let rect = CGRect(x:0, y: 0, width: size.width, height: size.height) 
     let rectLine = CGRect(x:0, y:size.height-lineSize.height,width: lineSize.width,height: lineSize.height) 
     UIGraphicsBeginImageContextWithOptions(size, false, 0) 
     UIColor.clear.setFill() 
     UIRectFill(rect) 
     color.setFill() 
     UIRectFill(rectLine) 
     let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! 
     UIGraphicsEndImageContext() 
     return image 
    }