2016-10-05 11 views
6

UIVisualViewをUIVisualViewの周りに影を作成することはできますか?ビュー全体を覆わずにUIVisualEffectViewの周りにシャドーを作成する

私は基本的にはちょうど影ビュー周囲が、このコードの影がはるかに全景を暗くビュー全体をカバーするとします

 let borderPath = UIBezierPath(roundedRect: view.bounds, byRoundingCorners: [.topLeft, .topRight], cornerRadii: CGSize(width: 15, height: 15)).cgPath 

    shadowView.frame = view.bounds 
    shadowView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
    shadowView.layer.shadowOpacity = 0.3 
    shadowView.layer.shadowRadius = 3.0 
    shadowView.backgroundColor = UIColor.clear 

    shadowView.layer.shadowPath = borderPath 
    shadowView.layer.shadowOffset = CGSize(width: 0, height: 0) 
    self.view.insertSubview(shadowView, at: 0) 

    let blurEffect = UIBlurEffect(style: .extraLight) 
    let blurView = UIVisualEffectView(effect: blurEffect) 
    blurView.frame = view.bounds 
    blurView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
    blurView.clipsToBounds = true 
    blurView.layer.cornerRadius = 15 
    view.insertSubview(blurView, aboveSubview: shadowView) 

EDIT。
アップルのマップアプリケーションと同じことを達成する必要があります。ドラッグ可能なお気に入りビューでは、UIVisualEffectViewの背景に干渉することなく、UIVisualEffectViewとその周囲の影を使用します。

は例のスクリーンショットを参照してください: enter image description here enter image description here

+0

はあなたが適用され、元のビューには以下のビューを取ると、そのビューに影を適用することができます。同じ大きさのビューから蛇口を設定するビューを確認してください –

+0

何を意味するのか分かりません。私に例を示してください。 – alengqvist

答えて

2

[OK]を、ので、問題は根本的な観点での私の背景が白だったということでした。また、BlurEffectよりも明るい背景で使用されるUIBlurEffect .extraLightを使用すると、UIVisualViewの下の影がより鮮やかな背景よりも暗く表示されます。また、この問題で説明


Fix UIVisualEffectView extra light blur being gray on white background

UPDATE

は、私は解決策が影を表現するために9部構成のUI​​Imageを作成する必要がGithubでこれを解決する方法を説明するプロジェクトを見つけました。作成者は、iOS 10マップの基礎となるレイヤについても説明します。

+0

は、白/透明背景のソリューションですか? – ronhippler

+0

私はあなたが影の外側が現れ、影の内側がはっきりするように影をカットしようとすることができると思います。 – alengqvist

+0

私はまた、ソリューションを知りたいと思っています... – Rain

1

iOS 10のマップの外観を再現しようとしています。私はAppleが実際の境界とコンテンツの上にUIImageを持つことでこれを回避

View debugger breakdown

...何が起こっていたか見るためにデバッガにシミュレータでマップアプリを添付することを決定し、影。それを行う最もエレガントな方法ではありませんが、私は正確な外観に行くので、私は正確なアプローチを取るつもりです。

マップアプリからアセット(thisを使用)を取得して独自のものを保存しました。恥彼らはしかし、それには2倍のアートワーク@持つ:/

CardShadowFull@2x.png

+0

あなたのプロジェクトでiOS10マップを再現することに進展しましたか? – alengqvist

+0

@alengqvist:私はこの境界線の見た目を再現したいと思っており、その作業を完了しました。注目すべきは、地図アプリケーションから借りたアセットに「特殊な」不規則な角の半径があるため、通常の 'layer.cornerRadius'の値を設定しても整列しないということです。 – liamnichols

+0

小さな質問どのようにデバッガをアタッチしましたかアップルマップアプリに? –

関連する問題