몇 개의 UIButton이 있고 IB에서는 Aspect Fit으로 설정되어 있지만 어떤 이유로 항상 늘립니다. 설정해야 할 다른 것이 있습니까? 나는 모든 다른보기 모드를 시도했지만 작동하지 않고 모두 늘어납니다.
답변
나는 전에 그 문제가 있었다. 나는 내 이미지를 넣어 그것을 해결 UIImageView
하는 경우, contentMode
설정이 실제로 작동, 투명 정의를 넣어 UIButton
그 맨 위에.
편집 :이 대답은 쓸모가 없습니다. 최신 버전의 iOS에서 정답 은 @Werner Altewischer의 답변 을 참조하십시오 .
답변
해결책은 contentMode
의 imageView
속성 을 설정하는 것 UIButton
입니다. 이 UIButton
작업을 수행하려면 사용자 지정 형식으로을 만들어야합니다 (그렇지 않으면 nil
이 속성에 대해 반환 됨).
답변
이 방법은 저에게 매우 효과적이었습니다. :
에서 XIB 버튼과 세트를 선택 user defined runtime attributes
:
- 주요 경로 :
self.imageView.contentMode
- 유형:
Number
- 값:
1
열거 형을 사용할 수 없기 때문에 숫자를 사용합니다. 그러나 UIViewContentModeScaleAspectFit는 1과 같습니다.
답변
Interface Builder에서이 작업을 수행하는 경우 런타임 속성 검사기를 사용하여 코드없이 직접 설정할 수 있습니다.
버튼의 키 경로를 “숫자”유형과 “1”값 (또는 원하는 모드)을 사용하여 “imageView.contentMode”로 설정합니다.
답변
contentMode에 버튼의 imageView를 사용합니다. 버튼 자체가 아닙니다.
homeButton.imageView.contentMode = UIViewContentModeScaleAspectFit;
homeButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
homeButton.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
[homeButton setImage:[UIImage imageNamed:kPNGLogo] forState:UIControlStateNormal];
답변
당신이에 이미지를 넣을 경우 UIImageView
버튼 뒤에, 당신은 내장의 기능 느슨한 것 UIButton
같은 클래스 adjustsImageWhenHighlighted
와 adjustsImageWhenDisabled
, 서로 다른 상태에 대한 다른 이미지를 설정하는 과정 능력 (이 자신을 일의 골치 아플없이).
우리는 이미지를 원한다면 모든 제어 상태에 대한 unstreched을 한 approuch을 사용하여 이미지를 얻을 수 있습니다 imageWithCGImage:scale:orientation
다음과 같은 방법으로 :
- (UIImage *) getScaledImage:(UIImage *)img insideButton:(UIButton *)btn {
// Check which dimension (width or height) to pay respect to and
// calculate the scale factor
CGFloat imgRatio = img.size.width / img.size.height,
btnRatio = btn.frame.size.width / btn.frame.size.height,
scaleFactor = (imgRatio > btnRatio
? img.size.width / btn.frame.size.width
: img.size.height / btn.frame.size.height;
// Create image using scale factor
UIImage *scaledImg = [UIImage imageWithCGImage:[img CGImage]
scale:scaleFactor
orientation:UIImageOrientationUp];
return scaledImg;
}
이를 구현하기 위해 다음과 같이 작성합니다.
UIImage *scaledImg = [self getScaledImage:myBtnImg insideButton:myBtn];
[myBtn setImage:scaledImg forState:UIControlStateNormal];
이렇게하면 모든 제어 상태에서 이미지가 늘어나는 것을 방지 할 수 있습니다. 그것은 나를 위해 일했지만 그렇지 않은 경우 알려주십시오!
참고 : 여기서는와 관련된 문제를 다루고 UIButton
있지만 , 또는 이미지를 맞추고 싶은 것이 insideButton:
있을 수도 있습니다 insideView:
.
답변
나는이 문제가 얼마 전에 있었다. 내가 가진 문제는이 효과를 제한된 배경 UIButton에 적용하려고했기 때문에 쉽게 조정할 수 없다는 것을 의미합니다.
트릭은 이미지로 설정 한 다음 @ayreguitar의 기술을 적용하면 문제가 해결됩니다!
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton setContentMode:UIViewContentModeScaleAspectFill];
[myButton setImage:@"myImage.png" forState:UIControlStateNormal];
