2016-05-18 16 views
2

UIViewを複数のビューにマスクされたビューにすることはできませんか?次のUIViewでmaskViewを設定していますが、最後のマスクビューのみがマスク設定を保持しています。複数のiOS UIViewを1つのUIViewでマスキングする

imageOne.maskView = viewMask 
    labelThing.maskView = viewMask 
    labelOtherThing.maskView = viewMask 
    labelLastThing.maskView = viewMask 
    labelMaskThis.maskView = viewMask //the only masked view 

これをトラブルシューティングすると、最後の行をコメントアウトして、私の疑惑を確認しました。

imageOne.maskView = viewMask 
    labelThing.maskView = viewMask 
    labelOtherThing.maskView = viewMask 
    labelLastThing.maskView = viewMask //now gets the mask 
    //labelMaskThis.maskView = viewMask 

私のviewMask: UIViewを複数のビューに適用する方法はありますか?

+0

各ビューに独自のマスクビューインスタンスを与えることはできますか? – NRitH

答えて

3

答えはいいえですが、同じUIViewインスタンスを使用して複数のビューをマスクすることはできません。マスクされているビューのレイヤー階層に、マスキングビューのレイヤーが統合されているようです。

マスクする予定のビューごとに新しいUIViewマスクインスタンスを作成することをお勧めします。別の方法としては、NSKeyedArchiver経由で既存のビューをコピーすることができます:

let archivedData = NSKeyedArchiver.archivedDataWithRootObject(viewMask) 
let viewMaskCopy = NSKeyedUnarchiver.unarchiveObjectWithData(archivedData) as! UIView 

私は単に新しいマスキングビューインスタンスあなたが最初の場所でviewMaskをインスタンス化する方法を作成することをお勧めしますが。

また、ストーリーボードのUIViewを含むマスクされたビューをグループ化して、代わりにそのビューにマスクを適用することもできます。

+0

私が選んだ別のオプションもあります。私はストーリーボードの別のビューの下で私が望むすべてのビューをネストし、UIViewコンテナにマスクを適用しました。 – styler1972

+0

ああ、これはうまくいくはずです、私はあなたがお互いの隣に何かを表示していると思いました。 –

関連する問題