react-native-blur icon indicating copy to clipboard operation
react-native-blur copied to clipboard

Shadow and borderRadius on BlurView

Open danvass opened this issue 8 years ago • 14 comments

Is it possible to use props like this for the shadow? When I use it the blur effect disappears.

shadowColor={'black'} shadowRadius={5} shadowOpacity={0.15} shadowOffset={{width: 0, height: 0}}

In addition, it appears that using border radius for an individual corner doesn't work.

borderRadius:10, //works with overflow:hidden
borderTopLeftRadius: 10, //doesn't work
borderTopRightRadius: 10, //doesn't work

danvass avatar Jan 15 '17 06:01 danvass

Seems it requires an additional work in a way how styles should be applied to the UIVisualEffectsView. I'll try to implement it when I have a bit more time. Otherwise, if you want it faster, I can tell you the desired way to go and kindly ask you to contribute to the project. Which one would you prefer?

Kureev avatar Jan 16 '17 09:01 Kureev

@Kureev I would be happy to try help with implementing the shadows prop. However, haven't done it before so would appreciate any guidance.

danvass avatar Jan 18 '17 17:01 danvass

@DVassilev wouldn't it work to just wrap the BlurView in another View that has those shadow props?

jaredly avatar Jan 27 '17 17:01 jaredly

@jaredly Just tried that: it removes the blur effect from the BlurView.

williambout avatar Jan 29 '17 23:01 williambout

@jaredly sorry for not getting back to you sooner but as @williambout said it removes the blur effect if I try to do that.

danvass avatar Jan 30 '17 08:01 danvass

hmm yup, I'm seeing that too.

Blur view w/ shadow'd wrapper (shadow is offset a ton so you can see that blur is not applied) image

Remove the "shadow" props from the wrapper, and blur works again: image

jaredly avatar Jan 30 '17 17:01 jaredly

You can try to add a shadow as a child view of the BlurView, that should help (see http://stackoverflow.com/questions/39513573/ios10-uiview-blur-effect-with-shadow for more details)

Kureev avatar Jan 31 '17 11:01 Kureev

Still can't add a border-radius. Setting a border-radius to the parent view only helps for iOS, not for Android. Any suggestions?

christophby avatar May 21 '17 00:05 christophby

borderRadius works on ios but not on android. any workaround on this?

ethanyuwang avatar Nov 11 '19 20:11 ethanyuwang

Only workaround for borderRadius property is a container view with overflow: hidden (which is not quite elegant as a solution for an expensive view in terms of rendering)

borderRadius prop works on iOS, individual borders like borderTopLeftRadius don't work.

mrousavy avatar Jun 01 '20 13:06 mrousavy

Also, by using a container view with overflow: hidden there are multiple cons:

  1. Extra node in the renderer (tree)
  2. Unneccessary rendering of parts that aren't even displayed but cut off (overflow: hidden)
  3. weird dark spots in corners:

Screenshot 2020-06-01 at 15 32 20

Screenshot 2020-06-01 at 15 32 13

mrousavy avatar Jun 01 '20 13:06 mrousavy

Screen Shot 2021-03-05 at 01 40 37

try this, it Works on android and ios

tearsbear avatar Mar 04 '21 18:03 tearsbear

I was using #513 implementation for transparent view and was able to fix those weird shadows in the corners by using the default background color for the blur view and my color with opacity for the content view.:

image

terrysahaidak avatar Feb 07 '23 11:02 terrysahaidak

@terrysahaidak I too had some issues with some weird dark borders showing when I added border-radius to the container of my Blurview Adding border color to the container of my blur view as transparent solved the issue:

<View style={{borderTopLeftRadius: 50, borderTopRightRadius: 50, borderColor: 'transparent'}}>
       <BlurView style={StyleSheet.AbsoluteFill} />
</View>

gilons avatar Aug 06 '23 13:08 gilons