저는 UIButton을 가지고 있으며 이미지를 원형으로 만들 수 있도록 배경 이미지의 UIImageView에 액세스하고 싶습니다. 나는 이미지 자체에 영향을 미칠 수 있음을 알고 있지만 더 우아하게 이것을하는 것을 선호합니다. 또한 백그라운드에서 UIImage를 가져 오기 위해 button.currentBackgroundImage
속성을 사용할 수 있다는 것을 알고 있지만보기 자체가 필요합니다. 보기가 완료되면이 코드를 사용하려고합니다.UIButton의 배경 이미지의 UIImageView에 액세스
buttonImageView.layer.cornerRadius = buttonImageView.frame.size.width/2;
buttonImageView.clipsToBounds = YES;
buttonImageView에 액세스하려면 어떻게해야합니까?
편집 : 인해 @ vhristoskov의 제안에,이 코드로 버튼 자체를 자르기 시도 :
self.button.layer.cornerRadius = self.button.frame.size.width/2;
self.button.clipsToBounds = YES;
그리고이 모양 만든 : 나는 것을 발견 디버깅 후
을 frame.size.width는 100이었을 때 46이었습니다. 그래서이 코드를 대신 사용해 보았습니다.
self.button.layer.cornerRadius = self.button.currentBackgroundImage.size.width/2;
self.button.clipsToBounds = YES;
,
그리고이 모양 제작 :
그리고, cornerRadius
가 65으로 설정되고 있던이 시간을 그래서 실제로 내 문제는 내가 지금 올바른 폭을하지 않아도됩니다 것 같아 . 올바른 번호를 얻기 위해 어떤 자산에 액세스해야합니까? 있는 viewDidLoad에
[self.myButton setBackgroundImage:[UIImage imageNamed:@"image"] forState:UIControlStateNormal];
또는 이전, 당신은 다음 viewDidAppear에서 다음 호출 할 수 있습니다 :
if (self.myButton.subviews.count > 0 && [self.myButton.subviews[0] isKindOfClass:[UIImageView class]]) {
UIImageView *imageView = self.myButton.subviews[0];
imageView.layer.cornerRadius = imageView.frame.size.width/2;
imageView.clipsToBounds = YES;
}
을하지만이 서브 뷰 순서이기 때문에 더 우아하지 않습니다 당신이 뭔가를 호출한다고 가정
당신의있는 UIButton에 직접 동일한 코드를 적용 할 이유가 있습니까? – vhristoskov
@vhristoskov hmmm 방금 시도한 결과 이상한 결과를 얻었습니다. 이미지가 이상하게 생겼습니다. 원하는 경우 제 질문에 대한 스크린 샷을 추가 할 수 있습니다. – multitaskPro
이것은 좋을 것입니다.또한 IB (또는 단추 프레임을 설정하는 데 사용한 코드)에 구속 조건 이미지를 추가 할 수도 있습니다. – vhristoskov