2009-03-20 11 views
4

라운드 UIButton (둥근 사각형이 아님)을 그리는 것이 가능한지 알고 싶습니다.둥근 UIButton

사용자 정의 유형의 UIButton에 둥근 이미지를 추가하면 원형 버튼처럼 보입니다. 그러나 버튼을 클릭하는 순간 버튼의 경계가 보이기 때문에 정사각형 버튼처럼 보이고 클릭이 끝나면 다시 둥근 버튼처럼 보입니다.
클릭이 발생하는 순간에도 단추가 원형 단추처럼 보이길 원합니다. 이것이 가능한가?

+1

당신은 유용한 서브 클래스로 OBShapedButton을 찾을 수 있습니다; 소스는 https://github.com/ole/OBShapedButton에서 볼 수 있으며 일반 UIButton과 동일한 기능을 사용하여 투명도가있는 불규칙한 모양의 버튼을 사용할 수 있습니다. – Luke

답변

2

아마도 사용자 정의 컨트롤을 만들어야하지만 실제로 둥근 버튼이 필요합니까?

모든 플랫폼에는 UI 규칙이 있으며 iPhone도 예외는 아닙니다. 사용자는 버튼이 둥근 직사각형 이길 기대합니다. 나는이 권리를 얻고 경우

, 당신이 둥근 버튼을 찾고하지 않는, 오히려 클릭 (터치 가능) 이미지 : 응답

UPDATE는 언급합니다.

UIImageView 및 그 방법은 touchesBegan입니다.

UPDATE 2

이 잠깐. 어떤 종류의 라디오 버튼을 말하는거야? 웬일인지 당신은 진짜 라디오를 모방하려한다고 생각했습니다. radio button 그룹에 대해 이야기하는 경우 UISegmentedControl 또는 UIPicker을 사용하십시오.

+1

실제로 라디오 버튼을 추가해야합니다. 그 때문에 둥근 모양의 라디오 버튼 이미지가 있습니다. 그 이유는 둥근 버튼을 그려야 만했기 때문입니다. – saikamesh

+0

예,이 방법을 시도해 보겠습니다. 단추에 이미지를 추가하는 것이 더 쉬울 것이라고 생각했습니다. – saikamesh

0

내가 SDK에 대해 알고있는 것 (필자는 책/스크린 캐스트의 튜토리얼을 넘어선 경험이 거의 없다)에서 라디오 버튼을 사용하기 위해 자체 컨트롤을 만들어야 할 것입니다. this question에는이를 구현하는 방법에 대한 몇 가지 제안 사항이 있습니다.

사용자의 관점에서 본다면 네이티브 컨트롤을 고수하는 편이 낫다고 느낍니다. iPhone 사용자는 이러한 유형의 상호 작용을 위해 특정 컨트롤 (예 : UITableViews 또는 UIPickerViews)에 익숙합니다. 실제적으로 보편적 인 UI 규칙에서 벗어나면 사용자 경험이 더 악화되는 경향이 있습니다.

4

단지 두 개의 둥근 버튼 이미지를 만듭니다. 하나는 눌린 상태를, 다른 하나는 누르지 않은 상태로 만듭니다.

IB에서 사용자 지정 유형의 UIButton을 만듭니다. 배경 이미지를 설정하는 섹션으로 이동하여 드롭 다운을 '모두'로 설정하여 이미지를 펼쳐지지 않은 이미지로 설정하십시오.

드롭 다운을 "선택됨"으로 변경하고 누른 이미지를 넣습니다.

이제 채우기 유형을 가로 세로 맞춤으로 변경하고 버튼을 sqare로 만듭니다. 어디서나 일반 UIButton으로 사용하십시오. 물론 비슷한 단계 (프로그램 설정 UIControlStateNormal 및 UIControlStateSelected에 대한 이미지)로 모든 프로그램 적으로 쉽게이 작업을 수행 할 수 있습니다.

2
UIButton *but=[UIButton buttonWithType:UIButtonTypeCustom]; 

but.layer.cornerRadius=50; 
+0

but.clipsToBounds = YES를 추가해야합니다. –

9

테스트 코드 :

.H

-(void)vijayWithApple; 

.m

-(void)vijayWithApple{ 

      NSLog(@"vijayWithApple Called"); 
    } 


UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

[button setImage:[UIImage imageNamed:@"Micky.png"] forState:UIControlStateNormal]; 

[button addTarget:self action:@selector(vijayWithApple) forControlEvents:UIControlEventTouchUpInside]; 

[button setTitle:@"Show View" forState:UIControlStateNormal]; 

button.frame = CGRectMake(135.0, 180.0, 40.0, 40.0);//width and height should be same value 

button.clipsToBounds = YES; 

button.layer.cornerRadius = 20;//half of the width 

button.layer.borderColor=[UIColor redColor].CGColor; 

button.layer.borderWidth=2.0f; 

[self.view addSubview:button]; 

결과

enter image description here

+1

StackOverflow는 3이 아닌 한 단어로 표기합니다. :) –

+0

니스 캐치 ...... –

+2

이 웹 사이트의 도메인 이름은 한 단어로 표기되어 있지만 이는 도메인 이름이기 때문입니다. 'Stack Overflow'는 두 단어입니다. – Sam