react-native-blur/examples/Basic/index.ios.js

162 lines
3.9 KiB
JavaScript
Raw Normal View History

2016-11-09 00:12:53 +00:00
/**
* Basic [iOS] Example for react-native-blur
* https://github.com/react-native-community/react-native-blur
*/
import React, { Component } from 'react'
import {
AppRegistry,
StyleSheet,
Text,
Image,
2016-11-09 00:12:53 +00:00
View,
SegmentedControlIOS,
Switch,
2016-11-09 00:12:53 +00:00
} from 'react-native'
import { BlurView, VibrancyView } from 'react-native-blur'
2016-11-09 00:12:53 +00:00
class Basic extends Component {
constructor(props) {
super(props)
2016-11-09 00:12:53 +00:00
this.state = {
2016-11-09 00:19:32 +00:00
showBlurs: true,
2016-11-09 00:12:53 +00:00
blurBlurType: 'light',
blurActiveSegment: 1,
vibrancyBlurType: 'dark',
vibrancyActiveSegment: 2,
}
}
_onBlurChange(event) {
this.setState({blurActiveSegment: event.nativeEvent.selectedSegmentIndex})
}
_onBlurValueChange(value) {
this.setState({blurBlurType: value})
}
_onVibrancyChange(event) {
this.setState({vibrancyActiveSegment: event.nativeEvent.selectedSegmentIndex})
}
_onVibrancyValueChange(value) {
this.setState({vibrancyBlurType: value})
}
renderBlurs() {
return (
<View style={styles.container}>
<View style={styles.blurContainer}>
{/*
BlurView is supported on both iOS and Android.
If you also need to support Android, the BlurView must be
absolutely positioned behind your unblurred views, and it
cannot contain any child views.
*/}
<BlurView
blurType={this.state.blurBlurType}
blurAmount={10}
style={[styles.blurView]} />
<Text style={styles.welcome}>Blur component</Text>
<SegmentedControlIOS
values={['xlight', 'light', 'dark']}
selectedIndex={this.state.blurActiveSegment}
onChange={(event) => {this._onBlurChange(event)}}
onValueChange={(value) => {this._onBlurValueChange(value)}}
tintColor={this.state.blurBlurType === 'xlight' ? 'black' : 'white'}
/>
</View>
{/*
VibrancyView is only supported on iOS, and must contain child views,
otherwise the vibrancy effect doesn't work.
*/}
<VibrancyView
blurType={this.state.vibrancyBlurType}
blurAmount={10}
style={[styles.container, styles.blurContainer]}>
<Text style={styles.welcome}>Vibrancy component</Text>
<SegmentedControlIOS
values={['xlight', 'light', 'dark']}
selectedIndex={this.state.vibrancyActiveSegment}
onChange={(event) => {this._onVibrancyChange(event)}}
onValueChange={(value) => {this._onVibrancyValueChange(value)}}
tintColor="white"
/>
</VibrancyView>
</View>
)
}
2016-11-09 00:12:53 +00:00
render() {
return (
<View
style={styles.container}>
<Image
source={require('./bgimage.jpeg')}
resizeMode='cover'
style={styles.img}/>
{ this.state.showBlurs ? this.renderBlurs() : null }
2016-11-09 00:12:53 +00:00
<View
style={styles.blurToggle}>
<Switch
2016-11-09 00:19:32 +00:00
onValueChange={(value) => this.setState({showBlurs: value})}
value={this.state.showBlurs} />
2016-11-09 00:12:53 +00:00
</View>
2016-11-09 00:12:53 +00:00
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: 'transparent',
},
2016-11-09 00:12:53 +00:00
blurContainer: {
flex: 1,
backgroundColor: 'transparent',
justifyContent: 'center',
alignItems: 'stretch',
2016-11-09 00:12:53 +00:00
paddingHorizontal: 20,
},
blurView: {
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0,
},
2016-11-09 00:12:53 +00:00
img: {
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0,
height: null,
width: null,
},
welcome: {
fontSize: 20,
2016-11-09 00:12:53 +00:00
fontWeight: 'bold',
textAlign: 'center',
margin: 10,
2016-11-09 00:12:53 +00:00
color: 'white',
},
2016-11-09 00:12:53 +00:00
blurToggle: {
position: 'absolute',
top: 30,
right: 10,
alignItems: 'flex-end',
}
2016-11-09 00:12:53 +00:00
});
AppRegistry.registerComponent('Basic', () => Basic);