2013-12-13 5 views
2

내 애플 리케이션에 UIButton이 있는데 아주 작습니다. 때로는 가볍게 두 드릴 수 있습니다. 이미지를 동일한 크기로 유지하면서 버튼 주위에 20 픽셀의 여백을 두는 방법이 있습니까? 내 코드는 다음과 같습니다.UIButton의 프레임을 설정하지만 이미지의 크기를 동일하게 유지하십시오.

self.helpButton= [UIButton buttonWithType:UIButtonTypeCustom]; 
[self.helpButton setImage:[UIImage imageNamed:@"Info Button.png"] forState:UIControlStateNormal]; 
[self.helpButton addTarget:self 
      action:@selector(showHelp) 
forControlEvents:UIControlEventTouchUpInside]; 

if ([[ UIScreen mainScreen ] bounds ].size.height == 568) { 
    self.helpButton.frame = CGRectMake(280.0, 528.0, 20, 20); 
} else { 
    self.helpButton.frame = CGRectMake(280.0, 440.0, 20, 20); 
} 

기본적으로 나는 더 큰 영역을 탭하고 싶지만 버튼을 같은 크기로 유지하고 싶습니다.

답변

1

하위 클래스 UIButton 및 backgroundRectForBounds: (또는 사용 사례에 맞는 것으로 contentRectForBounds:)을 재정의하십시오.

+0

유일한 방법은이 방법입니까? 그것은 꽤 복잡해 보입니다 – user2397282

+1

그건 의견의 문제입니다. 한 사람의 복잡성은 다른 사람의 쉬운 파티입니다. 왜 그것을 시험해 보지 않으시겠습니까? – matt

3

setImageEdgeInsets로 시도하십시오. 이것을 확인하십시오.

if ([[ UIScreen mainScreen ] bounds ].size.height == 568) { 
     self.helpButton.frame = CGRectMake(280.0, 528.0, 40, 40); 
    } else { 
     self.helpButton.frame = CGRectMake(280.0, 440.0, 40, 40); 
    } 

    [self.helpButton setImageEdgeInsets:UIEdgeInsetsMake(10, 10, 10, 10)]; 
+0

이것은 버튼 크기를 변경했습니다 – user2397282

0

버튼 배경색이 맑은 경우 버튼의 크기를 늘릴 수 있습니다. 최근에 작은 이미지가있는 삭제 버튼을 위해이 작업을 수행했습니다.

UIImage *deleteImage = [UIImage imageNamed:@"btnDelete"]; 

    CGSize btnSize = CGSizeMake(deleteImage.size.width*2, deleteImage.size.height*2); 

    self.deleteButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

    [_deleteButton setImage:deleteImage forState:UIControlStateNormal]; 

    _deleteButton.frame = CGRectMake(0,0,btnSize.width,btnSize.height); 
+0

문제는 제 이미지가 꽤 큽니다. 20px x 20px로 축소했습니다. – user2397282

+1

올바른 크기로 프로젝트에 이미지를 추가하고 그 이미지를 사용하는 것이 좋습니다. 또는 별도의 UIImageView를 만들고 버튼의 이미지를 설정하는 대신 버튼의 하위보기로 추가 할 수 있습니다. – ChrisH

+0

또한 이미지가 프레임의 오른쪽 위에 표시되지 않습니까? – user2397282

관련 문제