<button id="9slfp"><object id="9slfp"></object></button>
<button id="9slfp"><object id="9slfp"><menuitem id="9slfp"></menuitem></object></button>
    <em id="9slfp"></em>
    <button id="9slfp"><acronym id="9slfp"><input id="9slfp"></input></acronym></button>
  • 免費開源的iOS開發學習平臺

    React Native基礎:14-ScrollView組件

    ScrollView組件簡介

    ScrollView組件是一個可以滾動的視圖,它可以支持上下方向以及左右方法進行滾動。由于手機屏幕大小有限,通常情況下,不能在一屏幕內展示完整的界面,特別是針對微博、今日頭條之類的應用,其內容都來自于服務器,可以說其展示的內容長度是無窮無盡的。因此只能讓用戶通過滾動操作來進行內容瀏覽,此時需要借助ScrollView組件。

    除了用來展示列表信息,ScrollView組件最常見的到地方就是手機上的瀏覽器頁面。ScrollView組件對于內存性能沒有優化。所有組件上的子組件都會被加載到內存中,因此主要在顯示內容不是特別多的情況下使用。

    ScrollView組件有兩個滾動方向,豎直滾動和水平滾動。ScrollView組件在豎直滾動的時候,需要明確的知道它內容的高度。ScrollView組件在水平滾動的時候,需要明確知道它內容的寬度。

    在ScrollView組件中,提供了一個重要方法,可以滾動到指定的位置。在下面的方法中,可以指定x與y值,即滾動到指定的x,y偏移處,第三個參數為是否啟用平滑滾動動畫。

    scrollTo(y: number | { x?: number, y?: number, animated?: boolean }, x: number, animated: boolean)
    

    ScrollView組件常用屬性

    ScrollView組件中提供了如下一些常用的屬性和方法,可以對ScrollView組件的樣式進行定制,同時可以監控ScrollView組件與用戶進行交互的行為,從而可以在用戶交互過程中添加額外的功能。

    | 屬性 | 類型| 值 |
    | --- | --- | --- |
    onScroll |function |在滾動的過程中,每幀最多調用一次此回調函數。調用的頻率可以用scrollEventThrottle屬性來控制。|
    contentOffset |PointPropType |用來手動設置初始的滾動坐標。默認值為{x: 0, y: 0}。|
    | pagingEnabled |bool | 當值為true時,滾動條會停在滾動視圖的尺寸的整數倍位置。這個可以用在水平分頁上。默認值為false。 |
    | showsHorizontalScrollIndicator |bool | 當此屬性為true的時候,顯示一個水平方向的滾動條。 |
    | showsVerticalScrollIndicator |bool | 當此屬性為true的時候,顯示一個垂直方向的滾動條。 |
    | scrollEnabled |bool | 當值為false的時候,內容不能滾動,默認值為true。 |
    | maximumZoomScale |number | 允許的最大縮放比例。默認值為1.0。 |
    | minimumZoomScale |number | 允許的最小縮放比例。默認值為1.0。 |
    | stickyHeaderIndices |[number] | 一個子視圖下標的數組,用于決定哪些成員會在滾動之后固定在屏幕頂端。舉個例子,傳遞stickyHeaderIndices={[

    示例代碼

    現在我們來編寫一個簡單的示例代碼,在ScrollView組件中存放200個Text組件。最終的效果是手機屏幕上展示200條文本,可以用手指上下滑動來進行瀏覽。

    • 在終端中執行如下命令,創建ScrollViewDemo工程;
    react-native init ScrollViewDemo
    
    • 使用Atom打開工程的index.ios.js文件,編寫組件所使用的樣式;
    const styles = StyleSheet.create({
      container: {
        flex: 1,
        backgroundColor: '#F5FCFF',
        paddingTop: 20,
      },
      verticalScrollView: {
        flex: 1,
        margin: 10,
      },
    });
    
    • 在一個ScrollView組件中添加200個Text組件;
    var NUM_ITEMS = 200;
    
    export default class ScrollViewDemo extends Component {
      makeItems(nItems: number, styles) {
        var items = [];
        for (var i = 0; i < nItems; i++) {
           items[i] = (
             <Text key={i}>{'這是第 ' + i + '行'}</Text>
           );
        }
        return items;
      };
    
      render() {
        var items = this.makeItems(NUM_ITEMS, styles.itemWrapper);
        var verticalScrollView = (
          <ScrollView style={styles.verticalScrollView}>
            {items}
          </ScrollView>
        );
    
        var view = (
          <View style={styles.container}>
            {verticalScrollView}
          </View>
        )
        return view;
      }
    }
    
    • 使用import加載項目所使用的模塊,并且注冊組件ScrollViewDemo成為整個應用的根容器
    import React, { Component } from 'react';
    import {
      AppRegistry,
      StyleSheet,
      Text,
      View,
      ScrollView,
    } from 'react-native';
    
    AppRegistry.registerComponent('ScrollViewDemo', () => ScrollViewDemo);
    
    • 在終端中執行下面的命令運行程序,在iOS模擬器中可以看到ScrollView組件中添加的Text組件,并且可以上下滑動,在屏幕的右側可以看到垂直方向的位置指示器。
    react-native run-ios
    


    精品h动漫无遮挡在线看中文|久久精品国产精品亚洲艾草|久久亚洲春色中文字幕|精品人妻少妇一区二区三区|欧美精品v国产精品v

    <button id="9slfp"><object id="9slfp"></object></button>
    <button id="9slfp"><object id="9slfp"><menuitem id="9slfp"></menuitem></object></button>
    <em id="9slfp"></em>
    <button id="9slfp"><acronym id="9slfp"><input id="9slfp"></input></acronym></button>