web-dev-qa-db-ja.com

iOS-以前に追加されたUIViewのサブレイヤーを削除する方法

UIViewのサブクラスであるカスタムビューがあります。カスタムビューにいくつかのサブレイヤーを追加しましたが、それらを削除する必要があります。

私はこれを試しました:

self.layer.sublayers = nil;

ただし、これにより、ビューの初期サブレイヤーを含むすべてが削除されます。

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

注:アプリはiOS 7以降で実行されます。

ありがとう!

19
final static

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

コードは次のようになります。

Obj C:

[thesublayer removeFromSuperlayer]

迅速:

thesublayer.removeFromSuperlayer()

//thesublayer is the name of the layer you want to remove
38
luckystars

スーパーレイヤーから特定のレイヤーを削除する別の方法は、layer.nameプロパティ。後で比較して識別し、削除できます。

for layer in sublayers {
     if layer.name == "masklayer" {
          layer.removeFromSuperlayer()
     }
 }
38
Kiran Jasvanee

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

self.layer.sublayers?.popLast()
11
meow2x