react-native吸顶效果

这篇博客记录了如何在React-Native项目中实现吸顶效果,主要涉及TabPage和ScreenUtil的使用,便于阅读和参考。
摘要由CSDN通过智能技术生成

从网络上搜到的,方便自己下次阅读

展示页面

import React from 'react';
import ScrollableTabView, {
   ScrollableTabBar,} from 'react-native-scrollable-tab-view';
import * as ScreenUtil from './ScreenUtil';

import {
   
    View,
    StyleSheet,
    Text,
    ImageBackground,
    Image,
} from 'react-native';

import TabPage from './TabPage';

export default class IndexScreen extends React.Component {
   

    static propTypes = {
   };

    static defaultProps = {
   };

    constructor(props) {
   
        super(props);
        this.state = {
   }

    }


    render() {
   
        return (
            <View style={
   styles.container}>
                {
   this._renderHeader()}
                {
   this.renderScrollTab()}

            </View>
        )

    }

    onScroll = (e) => {
   
        let {
   x, y} = e.nativeEvent.contentOffset;
        console.log(y);
        if (y <= 100) {
   
            this.refs._title.setNativeProps({
   

                style: {
   
                    top: -y
                }
            });
            this.refs._scrolltab.setNativeProps({
   
                style: {
   
                    marginTop: 100 - y
                }
            })
        } else {
   
            this.refs._title.setNativeProps({
   
                style: {
   
                    top: -100
                }
            });
            this.refs._scrolltab.setNativeProps({
   
                style: {
   
                    marginTop: 0
                }
            })
        }
    };


    /**
     * 渲染头部
     * @private
     */
    _renderHeader() {
   
        let icon = 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1496299246419&di=f6d9e7d99236cb4319782d95cbd7f740&imgtype=0&src=http%3A%2F%2Fwww.pptbz.com%2FSoft%2FUploadSoft%2F200911%2F2009110521380826.jpg';
        let icon2 = 'http://pic28.nipic.com/20130503/9252150_153601831000_2.jpg';
        return (
            <ImageBackground
                ref={
   '_title'}
                style={
   styles.headerContainer}
                source={
   {
   uri: icon2}}>
            </ImageBackground>
        );
    }

    renderScrollTab() {
   
        return (
            <View
                ref={
   '_scrolltab'}
                style={
   styles.scrollTab}>
                <ScrollableTabView
                    listKey='d' key='4'

                    style={
   {
   height: ScreenUtil.screenH}}
                    renderTabBar={
   () => <ScrollableTabBar/>}
                >
                    <TabPage listKey='a' key='1' tabLabel='Tab #1' onScroll={
   this.onScroll}/>
                    <TabPage listKey='b' key='2' tabLabel='Tab #2' onScroll={
   this.onScroll}/>
                    <TabPage listKey='c' key='3' tabLabel='Tab #3' onScroll={
   this.onScroll}/>
                </ScrollableTabView>
            </View>
        )
    }

}

const styles = StyleSheet.create({
   
    container: {
   
        flex: 1,
        width: ScreenUtil.screenW
    },
    headerContainer: {
   
        width: ScreenUtil.screenW,
        height: 60,
        position: 'absolute',
        top: 0,
        justifyContent: 'center'
    },
    scrollTab
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值