[ios] UIButton의 imageView를 어떻게 확장합니까?

를 사용하여 이미지로 “button”이라는 UIButton 인스턴스를 만들었습니다 [UIButton setImage:forState:]. button.frame이 이미지 크기보다 큽니다.

이제이 버튼의 이미지를 더 작게 조정하겠습니다. button.imageView.frame, button.imageView.bounds및을 변경하려고 button.imageView.contentMode했지만 모두 효과가없는 것 같습니다.

누구든지 UIButton의 imageView 크기를 조정할 수 있습니까 ?

나는 다음 UIButton과 같이 만들었습니다 .

UIButton *button = [[UIButton alloc] init];
[button setImage:image forState:UIControlStateNormal];

다음과 같이 이미지 크기를 조정하려고했습니다.

button.imageView.contentMode = UIViewContentModeScaleAspectFit;
button.imageView.bounds = CGRectMake(0, 0, 70, 70);

이:

button.imageView.contentMode = UIViewContentModeScaleAspectFit;
button.imageView.frame = CGRectMake(0, 0, 70, 70);



답변

원본 포스터의 경우 내가 찾은 해결책은 다음과 같습니다.

commentButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;

이렇게하면 버튼이 수평으로 확장됩니다. 수직 설정도 있습니다.

하나를 알아내는 데 몇 시간이 걸렸 으므로 ( 부동산의 이름은 매우 직관적이지 않음) 공유 할 것이라고 생각했습니다.


답변

비슷한 문제에 직면했습니다. 여기서 배경 이미지 (테두리가있는 이미지)와 사용자 지정 단추 용 이미지 (플래그)가 있습니다. 나는 깃발이 축소되고 중앙에 있기를 원했습니다. imageView의 속성을 변경하려고 시도했지만 성공하지 못했고이 이미지를보고있었습니다.

여기에 이미지 설명 입력

실험 중에 다음을 시도했습니다.

button.imageEdgeInsets = UIEdgeInsetsMake(kTop,kLeft,kBottom,kRight)

다음과 같은 예상 결과를 얻었습니다.

여기에 이미지 설명 입력


답변

XIB 파일의 구성을위한 추가 방법. 텍스트 또는 이미지가 UIButton에서 전체 채우기 크기 조정을 원하는 경우이 옵션을 선택할 수 있습니다. 코드도 마찬가지입니다.

UIButton *btn = [UIButton new];

btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
btn.contentVerticalAlignment   = UIControlContentVerticalAlignmentFill;

여기에 이미지 설명 입력


답변

사용하다

button.contentMode = UIViewContentModeScaleToFill;

아니

button.imageView.contentMode = UIViewContentModeScaleAspectFit;

최신 정보:

@Chris가 말했듯이,

setImage : forState :에 대해이 작업을 수행하려면 다음을 수행하여 수평으로 크기를 조정해야합니다. myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;


답변

    UIButton *button= [[UIButton alloc] initWithFrame:CGRectMake(0,0,70,70)];
    button.buttonType = UIButtonTypeCustom;
    UIImage *buttonImage = [UIImage imageNamed:@"image.png"];

    UIImage *stretchableButtonImage = [buttonImage stretchableImageWithLeftCapWidth:12 topCapHeight:0];
    [button setBackgroundImage:stretchableButtonImage forState:UIControlStateNormal];


답변

이 해결책을 찾았습니다.

1) 다음 메서드를 하위 클래스 UIButton

+ (id)buttonWithType:(UIButtonType)buttonType {
    MyButton *toReturn = [super buttonWithType:buttonType];
    toReturn.imageView.contentMode = UIViewContentModeScaleAspectFit;
    return toReturn;
}

- (CGRect)imageRectForContentRect:(CGRect)contentRect {
    return contentRect;
}

그리고 그것은 잘 작동합니다.


답변

이상하게도 나를 위해 일한 유일한 콤보 (iOS 5.1)는 …

button.imageView.contentMode = UIViewContentModeScaleAspectFit;

[button setImage:newImage forState:UIControlStateNormal];