2011-11-20 4 views
2

UIToolbar 안에 UIBarButtonItem의 맞춤 그래픽을 사용하면 프로그램이 자동으로 그래픽 흰색을 켜고 내부 그림자를 적용합니다. 이 자동 스타일을 방지하고 내 맞춤 그래픽을 축 어적으로 사용하려면 어떻게해야합니까?UIBarButtonItem에서 스타일을 어떻게 제거합니까?

UIImage *buttonImage = [UIImage imageNamed:@"myImage.png"];  
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

[myButton setImage:buttonImage forState:UIControlStateNormal]; 
[myButton setImage:buttonImage forState:UIControlStateHighlighted]; 

UIBarButtonItem *myBtnItem = [[UIBarButtonItem alloc] initWithCustomView:myButton]; 

[myButton addTarget:self action:@selector(someSelector:) forControlEvents:UIControlEventTouchUpInside]; 
[myBtn setFrame:CGRectMake(someX, someY, someWidth, someHeight)]; 
[self.toolbar setItems:[NSArray arrayWithObjects:someBtnItemOne, myBtnItem, someBtnItemThree, nil]]; 
[myBtnItem release]; 

이 그다지 도움이 있다면, 당신은 당신이 도구 모음 버튼 항목을 초기화하기 위해 사용하는 코드를 보여주십시오 수 있습니다

screenshot of toolbar

답변

1

이가 정상적으로 수행 될 것이다 어떻게?

#import "XXBarButtonImageItem.h" 

    @implementation XXBarButtonImageItem 

    - (id)initWithFrame:(CGRect)frame 
        image:(UIImage*)image 
     backgroundImage:(UIImage*)bgImage 
    { 
     _button = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [_button setFrame:frame]; 

     self = [super initWithCustomView:_button]; 
     if (self) 
     { 
      if (image) 
       [_button setImage:image forState:UIControlStateNormal]; 

      if (bgImage) 
       [_button setBackgroundImage:bgImage forState:UIControlStateNormal]; 

     } 
     return self;  
    } 

    - (id)initWithFrame:(CGRect)frame 
        image:(UIImage*)image 
     backgroundImage:(UIImage*)bgImage 
       target:(id)target 
       action:(SEL)selector 
    { 
     self = [self initWithFrame:frame image:image backgroundImage:bgImage]; 
     if (self) 
     { 
      [_button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside]; 
     } 

     return self; 
    } 

    - (void)dealloc 
    { 
     [super dealloc]; 
     [_button release]; 
    } 

    - (void)addTarget:(id)target action:(SEL)selector forControlEvents:(UIControlEvents)controlEvents 
    { 
     [_button addTarget:target action:selector forControlEvents:controlEvents]; 
    } 

    - (void)setImage:(UIImage *)image forState:(UIControlState)state 
    { 
     [_button setImage:image forState:state]; 
    } 

    - (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state 
    { 
     [_button setImage:image forState:state]; 
    } 

    @end 
+0

내가 내 도구 모음 ... 질문을 구성하는 인터페이스 빌더를 사용하십시오 : 여기 – JoJo

+0

@Jojo 만약 당신이 뭔가를 미세하게 조정하고 싶다면 IB보다는 프로그램 적으로 생성하는 것이 낫습니다. IB는 간단한 기본보기 및 하위보기에 적합하지만 적어도이 기능을 사용하지 않고 몇 가지 사항을 작성하는 것이 좋습니다. IntrfceBldr의 "배경"에서 무엇이 일어나고 있는지를 배우고 실제로 이해하는 가장 좋은 방법입니다. – chown

1

이미지를 기반으로 그 UIBarButtonItem에서 상속 내가 만든 클래스의 인터페이스 빌더가 너무이기 때문에 프로 코드와 자신의 견해를 구성 할 제한된?
+0

"UIBarButtonItem'에서 상속받은 것은"UIBarButtonItem'을 받아들이는 모든 것에 전달 될 수 있습니다. 그러나 관계없이 이것은 멋진 아이디어입니다! 편의를 위해 카테고리를 만들 수도 있습니다. – chown

+0

:) 동의 - 수정하겠습니다 – bryanmac

+0

헤더 파일은 어디에 있습니까? (나는 멍청이야.) – JoJo

관련 문제