2016-06-02 39 views
6

私はUIViewのサブクラスであるカスタムビューを持っています。私はいくつかのサブレイヤをカスタムビューに追加しましたが、今はそれらを削除したいと思います。iOS - 以前に追加されたUIViewのサブレイヤを削除する方法

私はこれやってみました:

self.layer.sublayers = nil; 

をしかし、これは、ビューの最初のサブレイヤを含むすべてを削除します。

これを達成する方法はありますか?または毎回新しいカスタムビューを再初期化する必要がありますか?

注:アプリはiOS 7以上で動作します。

ありがとうございます!

答えて

13

追加されたサブレイヤへの参照を保持する 不要な場合は、スーパーレイヤーからサブレイヤを削除します。

コードは次のようであろう:スーパー層から特定の層を除去する別の方法は、layer.nameプロパティに一意の文字列を割り当てることである

thesublayer.removeFromSuperlayer() 

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

なぜ私はこれを考えなかったのですか?-----ありがとう! –

6

のObj C:

[thesublayer removeFromSuperlayer] 

スウィフト。後で比較してそれを特定して削除することができます。

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

popLast()を使用してSwift 3で行いました。

self.layer.sublayers?.popLast() 
関連する問題