보라 (위 주석)이있는 UIImageView 사용iOS - UIImageView는 늘릴 수 있지만 UIButton은 늘릴 수 없습니까?
//UIImageView* stretchTest = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
//[self addSubview:stretchTest];
UIButton *stretchTest = [UIButton buttonWithType:UIButtonTypeCustom];
[stretchTest setFrame:CGRectMake(0, 0, 400, 100)];
[stretchTest setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[self addSubview:stretchTest];
stretchTest.contentStretch = CGRectMake(0.5, 0.5, 0, 0);
stretchTest.contentMode = UIViewContentModeScaleToFill;
CGRect frame = stretchTest.frame;
frame.size.height = 300;
stretchTest.frame = frame;
, 이미지가 적절하게 뻗어 - 이미지의 중심 화소가 연신되기 때 둥근 모서리는 정확한 반경을 유지한다.
UIButton을 사용하면 이미지가 제대로 늘어나지 않습니다. 모서리 반지름은 유지되지 않고 추한 상태가됩니다.
UIImageView와 UIButton은 모두 UIView의 하위 클래스입니다. 왜 버튼의 크기가 imageView와 다르게됩니까?
ok ... 작동합니다. Apple에 따르면 위의 내용을 사용하려고했기 때문에 "contentStretch 속성을 사용하면 뷰의 배경을 지정할 때 stretchable UIImage 객체를 만드는 것이 좋습니다." UIView의 하위 클래스가이 속성을 사용할 수 있거나 사용할 수없는 것에 대해서는 언급하지 않았습니다. – sol
버튼에 사용할 수있는 contentStretch는 UIImageViews를 자체에 삽입하고 배경 이미지 (및 contentStretch)를 그 안에 복사하는 UIButton 하위 클래스 인 필자가 작성한 충분한 기능입니다 (지금 두 번!). 그것은 어렵지 않습니다. 유일한 작은 문제는 'LayoutSubviews'를 오버라이드하여 imageViews를 뒤로 이동시켜 단추의 배경이 아닌 이미지 및 제목 레이블 뒤에 표시되도록하는 것입니다. – rgeorge