나는 내 NSImageView의 모든 이름을 포함하는 NSTableView를 가지고 있으며, NSImageViews가 추가 된 순서에 따라 마지막 하나가 앞에 있습니다.NSImageView를 다른 NSImageView의 앞이나 뒤로 가져 오는 방법은 무엇입니까?
그러나 사용자가 NSImageViews를 다른 사람 앞에 가져올 수있게하려면 어떻게해야합니까?
미리 감사드립니다.
나는 내 NSImageView의 모든 이름을 포함하는 NSTableView를 가지고 있으며, NSImageViews가 추가 된 순서에 따라 마지막 하나가 앞에 있습니다.NSImageView를 다른 NSImageView의 앞이나 뒤로 가져 오는 방법은 무엇입니까?
그러나 사용자가 NSImageViews를 다른 사람 앞에 가져올 수있게하려면 어떻게해야합니까?
미리 감사드립니다.
당신이 궁금해하는 점은 뷰의 z- 순서를 제어하는 방법입니다.
역사적인 이유로 인해 AppKit (iOS의 UIKit과 다름)에서 제대로 지원되지 않습니다. 다소 최근까지는 에 개의 중복되는 형제보기가 있기 때문입니다.
(최근 OS X 릴리스에서) 일반적으로 Z- 순서 지정을 기본적으로 지원하는 Core Animation (특히 CALayer
)을 사용하는 것이 일반적이지만, 이는 사용자가 필요로하는 것에 대해 과장 될 수 있습니다. 당신을위한 학습 곡선을 갖기 위해).
실제로 무엇을하려고합니까? 이러한 이미지 (이미지 뷰)가 정확히 서로 위에 있습니까? 그렇다면 가장 쉬운 (더 나은 성능을내는) 방법은 하나의 NSImageView
을 가지고 -setImage:...
에 표시된 이미지를 변경하는 것입니다.
NSView 참조 페이지에서 설명했듯이보기의 하위보기의 z- 순서는보기의 subviews
배열에서 해당 하위보기로 지정됩니다. -addSubview:positioned:relativeTo:
을 사용하여 다른 하위 뷰를 상대적으로 삽입 할 수 있으며 subviews
속성을 가져 와서 원하는대로 하위 뷰를 재정렬 한 다음 -setSubviews:
을 호출하여 새 순서를 설정하면 기존 하위 뷰를 재정렬 할 수 있습니다.
즉, 문서 말 :
파단의 순서는 앞뒤, 것으로 간주 될 수도 있지만,이 무효화 및 드로잉 동작을 의미하는 것은 아니다.
이미지를 X만큼 드래그하여 화면에 표시하므로 한 번에 모두 표시됩니다. 내가 만들고있는 응용 프로그램은 장면을 만드는 것이므로 사용자는 이미지를 삭제하고 다시 추가하지 않고도 다른 이미지의 앞이나 뒤의 일부 이미지를 원할 수 있습니다. 말이 돼? –
간단한 예를 들어, NSImageView가 다른 NSImageView와 직접 겹치도록 만들었습니다. 뒤에 NSImageView를 배치하는 것이 쉬운 방법이 없습니다. 만약 그렇지 않다면 CALayer를 살펴볼 것입니다. –
@ ObjectiveC-InLearning 오른쪽 -z 순서로보기를 삽입하려면'-addSubview : positioned : relativeTo :'를 사용하여 원하는 것을 성취 할 수 있다고 생각하지만, 이것은 성 가시고 잠재적으로 취약합니다 (@Caleb가 방금 지적한대로). 많은 이미지를 얻으려면 결국 레이어 기반보기와 관련 'CALayer'작업을 사용해야 할 것입니다. –