2009-05-12 5 views
12

사용자 정의 UIButton의 배경으로 이미지를 설정하려고합니다. 인터페이스 빌더에서 "둥근 직사각형"UIButton에 대한 배경 이미지를 설정할 수 있었지만 지금은 테두리가 사라졌습니다. 국경을 유지할 방법이 있습니까? 또한 테두리를 반올림하지 않고 사각형으로 표시하고 싶습니다.사용자 정의 유형 UIButton에 사각형 경계를 설정하는 방법

+0

조금 더 정보를 아마? -drawRect를 구현하고 있습니까? 어떤 종류의 맞춤 검색 버튼입니까? 이미지를 사용하여 배경 설정을 시도 했습니까 (대부분의 사람들이 그렇게 할 것입니다), 아니면 특별히 사각형 그리기 방법을 찾고 계십니까? –

+0

좀 더 구체적이어야합니다. 사용자 지정 테두리를 그리려고합니까? 버튼의 크기를 설정 하시겠습니까? 자세한 내용을 알려주십시오. –

+0

괜찮아요, UIButton의 배경으로 이미지를 설정하려고합니다. 인터페이스 빌더에서 "rounded rect"UIButton에 대한 배경 이미지를 설정하여이 작업을 수행했습니다. 그러나 국경은 사라진다. 국경을 유지할 방법이 있을까? 또한 "둥근 직사각형"대신에 직각으로 테두리를 만들어야합니다. – afin

답변

3

당신이 버튼에 배경 이미지를 설정하면 버튼이 사라 설명 :

다음은 예입니다. 당신이 필요로하는 경우 다른 크기는

stretchableImageWithLeftCapWidth:topCapHeight:

방법 있는 UIImage

보면, 이미지에 포함.

17

cornerRadius, borderWidthborderColor 속성을 CALayer으로 확인하십시오. 이러한 속성은 iPhone OS 3.0부터 새로 추가되었습니다.

UIButton의 하위 클래스를 만든 다음 생성자에서 이러한 속성을 설정하는 것이 좋습니다. 단추에는 이러한 테두리 속성을 설정하기 위해 액세스 할 수있는 레이어 속성이 있습니다.

- (id)initWithFrame:(CGRect)frame { 
if(self = [super initWithFrame:frame]) { 

    [self.layer setBorderWidth:1.0]; 
    [self.layer setCornerRadius:5.0]; 
    [self.layer setBorderColor:[[UIColor colorWithWhite:0.3 alpha:0.7] CGColor]]; 
} 

return self; 
} 
+0

iPhone 2.2.1에서 해결 방법이 있습니까? – afin

+0

2.2.1에서는 켄달 (Kendall)이 아래에 제안한 내용을 따라 뭔가를 설명 할 것입니다. 이것은 새로운 응용 프로그램입니까? 그렇다면 애플이 아이폰 OS 3.0과 호환되는 앱만 승인 할 것이라고 확신한다. –

+0

예, 새로운 응용 프로그램입니다. Apple은 OS 3.0 호환 응용 프로그램 만 승인 할 것이므로 새 응용 프로그램은 이전 OS 버전에서 작동하지 않을 수 있습니다. OS 3.0 업그레이드가 무료이지만, 일부는 업그레이드를 기꺼이하지 않을 수도 있습니다. 생각을 공유하십시오. – afin

43
#import <QuartzCore/QuartzCore.h> // don't forget to add this in your file 
    CALayer * layer = [yourUIButton layer]; 
    [layer setMasksToBounds:YES]; 
    [layer setCornerRadius:0.0]; //when radius is 0, the border is a rectangle 
    [layer setBorderWidth:1.0]; 
    [layer setBorderColor:[[UIColor grayColor] CGColor]]; 

나는 이것이 이전 질문이지만 여전히 내 대답을 게시하고 싶습니다. 나는 대답을 찾고 있었기 때문에 쉽게 해결할 수있었습니다.

+0

정말 고마워요. – SampathKumar

+0

코어 애니없이 이것을 할 방법이 없습니까? –

+2

아래 @TylerJames를 보지 못한 사람들을 위해 : QuartzCore 프레임 워크를 가져와야 작동합니다. – mbuc91

8

IB의 "사용자 정의 런타임 속성"을 사용하여 아래 이미지 에서처럼 둥근 모서리를 설정할 수도 있습니다.

http://i.stack.imgur.com/uBkuB.png

+0

좋아요! 감사합니다 –

+0

이것은 좋은 발견입니다! 감사합니다 :) – windson

7

난 그냥 남 시구와 조나단에서 제공하는 답변을 추가하고 싶습니다.

레이어의 속성 bordercornerRadius에 액세스하려면 먼저 QuartzCore 프레임 워크를 가져와야합니다.

#import <QuartzCore/QuartzCore.h>

그렇지 않으면 속성에 액세스 할 수 없습니다.

+0

중요한 트릭을 추가하기위한 감사합니다 :) – trillions

1

버튼의 레이어 속성에 액세스하여 CALayer에서 테두리 속성을 설정할 수 있습니다.

첫째, 석영

#import <QuartzCore/QuartzCore.h> 

속성 설정을 추가

[[myButton layer] setBorderWidth:2.0f]; 
[[myButton layer] setBorderColor:[UIColor greenColor].CGColor]; 
관련 문제