2014-04-13 2 views
4

iOS 7.1에서 UItabBarItem의 배지 색상을 수정할 수 없으므로 TabBar에 UILabel을 추가하고 원하는 색상을 설정하고 iOS 7.1에서 작동하도록했습니다. 그러나 이것이 올바른 방법인지 확실하지 않습니다. 내 앱 스토어에 내 앱을 제출할 예정입니다. 이 때문에 내 앱이 거부되는 경우 누군가 나를 안내 할 수 있습니까? 아래는 제 코드입니다.iOS 7.1에서 UITabBarItem 배지 색상 변경

UILabel *badge=[[UILabel alloc]init]; 
badge.text = @"2"; 
badge.textAlignment=NSTextAlignmentCenter; 
badge.frame=CGRectMake(122, 1, 20, 20); 
badge.layer.cornerRadius=10; 
badge.textColor=[UIColor whiteColor]; 
badge.backgroundColor=[UIColor greenColor]; 
[tabbar addSubview:badge]; 
+1

비공개 API를 사용하거나 지침을 위반하지 않으므로 앱이 정상적으로 작동합니다. –

답변

3

사용자에게 노출되지 않았으므로 배지 색상을 수정할 수 없습니다. 텍스트는 문자열로만 설정할 수 있습니다.

@property(nonatomic,copy) NSString *badgeValue; // default is nil 

당신이하고있는 일은 괜찮습니다.

0

아니요. 색상을 변경할 수는 없지만 대신 자신의 배지를 사용하여 올바른 작업을 수행하고 있습니다. 이 확장명을 파일 범위에 추가하면 원하는대로 배지를 사용자 정의 할 수 있습니다. 모든 루트보기 컨트롤러에서 self.tabBarController!.setBadges([1,0,2])으로 전화하십시오.

배지 값이 왼쪽에서 오른쪽으로가는 3 개의 항목이있는 탭 표시 줄에 대한 명확한 내용입니다.

extension UITabBarController { 
    func setBadges(badgeValues:[Int]){ 

     var labelExistsForIndex = [Bool]() 

     for value in badgeValues { 
      labelExistsForIndex.append(false) 
     } 

     for view in self.tabBar.subviews { 
      if view.isKindOfClass(PGTabBadge) { 
       let badgeView = view as! PGTabBadge 
       let index = badgeView.tag 

       if badgeValues[index]==0 { 
        badgeView.removeFromSuperview() 
       } 

       labelExistsForIndex[index]=true 
       badgeView.text = String(badgeValues[index]) 

      } 
     } 

     for var i=0;i<labelExistsForIndex.count;i++ { 
      if labelExistsForIndex[i] == false { 
       if badgeValues[i] > 0 { 
        addBadge(i, value: badgeValues[i], color:UIColor(red: 4/255, green: 110/255, blue: 188/255, alpha: 1), font: UIFont(name: "Helvetica-Light", size: 11)!) 
       } 
      } 
     } 


    } 

    func addBadge(index:Int,value:Int, color:UIColor, font:UIFont){ 

     let itemPosition = CGFloat(index+1) 
     let itemWidth:CGFloat = tabBar.frame.width/CGFloat(tabBar.items!.count) 

     let bgColor = color 

     let xOffset:CGFloat = 12 
     let yOffset:CGFloat = -9 

     var badgeView = PGTabBadge() 
     badgeView.frame.size=CGSizeMake(17, 17) 
     badgeView.center=CGPointMake((itemWidth * itemPosition)-(itemWidth/2)+xOffset, 20+yOffset) 
     badgeView.layer.cornerRadius=badgeView.bounds.width/2 
     badgeView.clipsToBounds=true 
     badgeView.textColor=UIColor.whiteColor() 
     badgeView.textAlignment = .Center 
     badgeView.font = font 
     badgeView.text = String(value) 
     badgeView.backgroundColor = bgColor 
     badgeView.tag=index 
     tabBar.addSubview(badgeView) 

    } 
} 

class PGTabBadge: UILabel { 

}