2014-07-11 3 views
1

텍스트 오른쪽에 이미지 (IB로 작성 됨)를 가져 오려고합니다. 내가 here 발견 아이디어가있는 UIButton을 서브 클래스 화해, 오버라이드 (override)하는 것이었다 :UIButton 이미지 가운데 맞춤 텍스트 오른쪽

- (CGRect)imageRectForContentRect:(CGRect)contentRect 

- (CGRect)titleRectForContentRect:(CGRect)contentRect` which I did. 

그러나 예에 이미지 버튼의 오른쪽 가장자리에 모든 방법을 밀어

. 내 중심 텍스트 바로 뒤에 나타나기를 원합니다. 그래서 특정 폰트로 width of the label을 얻을 수 있다면 이것을 할 수 있다고 생각했습니다.

완벽하게 작동합니다. 그러나. 나는이 같은 imageRectForContentRect에 그렇게한다면 :

- (CGRect)imageRectForContentRect:(CGRect)contentRect 
{ 
    CGSize textSize = [self.titleLabel.text sizeWithAttributes:@{NSFontAttributeName: self.titleLabel.font}]; 
} 

나는 self.titleLabel를 호출하기 때문에 (무한 루프를 얻을 수 등 TEXTSIZE 코드를 호출하고 imageRectForContent를 호출

그래서 작동하지 않을 것입니다..

쉽게 중심의 텍스트와 버튼으로 텍스트의 오른쪽에 내 이미지를 얻을 수있는 또 다른 방법이 있습니까?

나는 여러 언어와 엉덩이의 텍스트를 지원하기 원하기 때문에 나는이 방법을 시도하고 있었다 에 길이가 다를 수 있습니다.

답변

3

특성 Ispector 내에서 IB에서이, 을하는 간단한 개념, 마지막 옵션은 가장자리의 드롭 다운에서 "에지" 이미지 선택을하고, 이제 선택 제목의 왼쪽 값을 증가시키고 그것의 왼쪽 값을 증가 부정. 결과가 나타납니다.

+1

네, 그렇지만 그 길이의 정확한 문자열에서만 작동합니다. 그리고 번역에서 길이가 다를 수 있습니다. – Matthijn

+0

다른 문자열 길이에 따라 단추 길이를 늘릴 수 있습니까? 그렇다면 버튼을 텍스트로 설정 한 후 self.imageEdgeInsets = UIEdgeInsetsMake (0.0, 0.0, (btSize.width - imageSize.width), 0.0)로 이미지 삽입을 변경해야합니다. – Surjeet

11
- (void)swapImageText 
{ 
    self.transform = CGAffineTransformScale(self.transform, -1.0f, 1.0f); 
    self.titleLabel.transform = CGAffineTransformScale(self.titleLabel.transform, -1.0f, 1.0f); 
    self.imageView.transform = CGAffineTransformScale(self.imageView.transform, -1.0f, 1.0f); 
} 

내 카테고리는 UIButton입니다. UIButton에 ID 변환이 있다고 가정하면 다른 모든 코드는 위반됩니다.

+1

완벽하게 일했습니다! –

관련 문제