2016-06-02 2 views
6

UIView의 하위 클래스 인 사용자 정의보기가 있습니다. 하위보기를 사용자 정의보기에 추가했지만 지금은 제거하겠습니다. iOS - UIView의 이전에 추가 된 하위 레이어를 제거하는 방법

나는이 일을 시도 :

self.layer.sublayers = nil; 

을하지만이 뷰의 초기 서브 레이어를 포함한 모든 것을 제거합니다.

이것을 달성 할 방법이 있습니까? 또는 매번 새로운 사용자 지정보기를 다시 초기화해야합니까?

참고 : 앱은 iOS 7 이상에서 실행됩니다.

고마워요!

답변

13

하위 레이어에 대한 참조 유지 필요하지 않은 경우 슈퍼 레이어에서 하위 레이어를 제거합니다.

의 Obj C :

코드는 같은 것

[thesublayer removeFromSuperlayer] 

스위프트 :

thesublayer.removeFromSuperlayer() 

//thesublayer is the name of the layer you want to remove 
+0

왜 이런 생각을하지 않았나 ... -_- 감사합니다! –

6

또 다른 방법은 슈퍼 레이어에서 특정 층을 제거하는 것입니다 layer.name 속성에 고유 한 문자열을 할당 . 나중에 확인하고 제거 할 수있는 비교할 수 있습니다.

for layer in sublayers { 
    if layer.name == "masklayer" { 
      layer.removeFromSuperlayer() 
    } 
} 
1

나는 스위프트 3에서 popLast()을 사용하여 만들었습니다.

self.layer.sublayers?.popLast() 
관련 문제