부모보기 센터에 UIImageView
을 배치하려고합니다. 이미지는 원래 가로 세로 비율을 유지해야하며 부모의 경계를 초과해서는 안됩니다. 따라서 풍경 이미지는 부모의 너비에 따라 제한되어야하고 세로 이미지는 원래 비율을 유지하면서 필요한만큼 수직 공간을 차지해야합니다.AutoLayout : UIImageView 및 Aspect Fit 콘텐츠 모드
소리는 AutoLayout을위한 상당히 간단한 작업과 같습니다. 맞습니까? 여기 내 설치가 UIImageView
위한거야 :
- 센터 수직으로 부모의
- 센터 수평으로 부모의
- imageView.width < = superview.width
- imageView.height < = superview.height
나는 또한 contentMode
을 Aspect Fit
으로 설정합니다. 모든게 정말 장치 화면보다 작은 작은 이미지에 대한 작동하지만 내 UIImageView
큰 이미지에 대한 기본 UIImage
(녹색 배경 - imageView.backgroundColor = [UIColor greenColor]
통지)보다 더 많은 공간을 차지합니다.
왜 이런 일이 무엇입니까? 나는 내 제약 조건에 맞는 AutoLayout 전문가가 아니다. 200x400과 같이 작은 이미지를 사용하면 UIImageView
은 녹색 부분이없는 화면에서 정확히 200x400 지점을 차지합니다.
테두리와 둥근 모서리를 추가하고 싶습니다.이 경우 분명히 제대로 작동하지 않습니다.
불행히도이보기에서 다른 이미지를 표시해야하므로 불행히도 가로 세로 비율을 미리 알 수 없습니다 : 크고 작은 조경 세로 또는 정사각형. 스크린 샷의 이미지는 3264x2448 해상도이며 실제로 크기가 적절히 축소됩니다. 비율이 유지되고 잘리지 않거나 흐트러지지 않습니다. 그러나 불행히도 이미지보기에는 이미지 자체보다 많은 실제 공간이 필요합니다. 테스트 목적으로 녹색 배경이 추가되었습니다. 둥근 모서리를 추가해야하므로 투명한 배경이 작동하지 않지만 이미지 뷰의 가장자리가 이미지와 일치하지 않기 때문에 이러한 모서리가 보이지 않습니다. – fraggjkee
하지만 프로그램 적으로 대응하는 Aspect Ratio 제약 조건을 추가 할 수 있다고 생각합니다. 계획과 같은 사운드 :) 실제로 AutoLayout을 사용하지 않고 프로그램으로 모든 것을 계산하고 설정할 수 있으므로이 질문의 아이디어는 달성 가능한지 여부를 이해하는 것이 었습니다 Swift/Objective-C 코드를 작성하지 않아도됩니다. – fraggjkee
@fraggjkee : 좋습니다.하지만 계획이 실패하면 업데이트 된 답변에서 내 기능 만 사용하십시오. 크고 작은 인물 사진과 풍경 이미지로 테스트 해본 결과 예상대로 작동하는 것 같습니다. – alexburtnik