1. 程式人生 > >【React Native開發】React Native控制元件之View檢視講解(7)

【React Native開發】React Native控制元件之View檢視講解(7)

轉載請標明出處:


()前言

      【好訊息】個人網站已經上線執行,後面部落格以及技術乾貨等精彩文章會同步更新,請大家關注收藏:http://www.lcode.org

       現在幾講我們對於React Native一些基礎做了相關講解(例如:環境搭建,開發IDE,除錯以及升級降級等),今天開始正式進入UI相關元件學習的階段了。首先我們來講一個非常基礎的元件View。

剛建立的React Native技術交流3群(496508742),React Native技術交流4群(458982758),請不要重複加群!歡迎各位大牛,React Native技術愛好者加入交流!同時部落格左側歡迎微信掃描關注訂閱號

,移動技術乾貨,精彩文章技術推送!

()View元件介紹

         View作為建立UI時候的最基礎,最常用的元件。這邊的View元件是支援FlexBox佈局(對於FlexBox佈局的詳細使用講解,請點選),CSS樣式以及相關觸控處理的容器元件。該元件我們可以巢狀在其他檢視View裡邊,並且可以包含很多種型別的子檢視。在Web,Android,iOS三種平臺上面該View檢視可以對應平臺中的三種原生檢視,其中iOS對於UIView

,Web端對應<div>標籤,Android對於android.view。下面我們來看一個比較簡單的例項:

'use strict';
var React = require('react-native');
var {
  AppRegistry,
  View,
} = React;
var TestText = React.createClass({
  render: function() {
    return (
      <View style={{flexDirection:'row',padding:20,height:100}}>
        <View style={{backgroundColor:'red',flex:1}}>
        </View>
      </View>
    );
  }
});

上述例子,我們這般首先建立了一個View,該View高度為100 ,但是該View的padding為20,所以整體效果如下:


如果把padding修改成margin:20的話,那麼是效果如下:


這個相信做過CSS ,原生布局開發的話,大家應該都能看得懂的。

其實ReactNative開發,View設計的時候,也支援我們採用StyleSheet來進行書寫控制元件的的佈局,這樣的話,我們的程式碼會更加的清晰以及便於維護了。其實React Native開發也更加推薦這種方式,下面我們採用StyleSheet來實現一下:

'use strict';
var React = require('react-native');
var {
  AppRegistry,
  View,
  StyleSheet,
} = React;

var TestText = React.createClass({
  render: function() {
    return (
      <View style={styles.first_view}>
        <View style={styles.second_view}>
        </View>
      </View>
    );
  }
});
var styles = StyleSheet.create({
  first_view:{
    flexDirection:'row',
    height:100,
    padding:20
  },
  second_view: {
    backgroundColor:'red',
    flex:1
  },
});
AppRegistry.registerComponent('TestText', () => TestText);

以上的程式碼我們發現使用StyleSheet,進行建立相關styles,然後賦值給styles物件,在控制元件中直接styles物件進行使用即可。還是比較OK的。

()View屬性方法介紹

  View屬性方法介紹如下:

序號

名稱

屬性Or方法

型別

說明

1

accessibilityLabel

屬性

string

2

accessible

屬性

bool

當為trues時,表示該元素是可以進行訪問,預設情況下

所有可觸控的元素控制元件都是可以訪問的

3

onAccessibilityTap

方法

function

該黨accessibletrue的時候並且使用者對控制元件View做了一個Tap(輕輕的觸控或者點選)的手勢

4

onLayout

方法

function

當元件的佈局發生變動的時候,會自動呼叫下面的方法:

{nativeEvent: { layout: {x, y, width, height}}}。該事件當重新計算佈局的時候會立即進行觸發,不過介面可能不會立即重新整理,特別當佈局動畫正在載入中的時候。

5

onMagicTap

方法

function

accessibletrue的時候,當用戶雙指點選(Magic Tap)的時候,進行觸發

其他的一些方法如下(下面很多是關於事件響應者鏈的,基本都是比較簡單的,就不著重講解的,有興趣大家都可以去測試一下):

onMoveShouldSetResponder,onMoveShouldSetResponderCapture,onPresponderGrant,onResponderMove,onResponderReject,onResponderRelease,onResponderTerminate,onResponderTerminationRequest,onStartShouldSetResponder,onStartShouldSetResponderCapture,pointerEvents enum('box-none', 'none', 'box-only', 'auto')(觸控事件是否可以進行穿透控制元件View);

removeClippedSubviews:該控制元件由於進行優化效能,尤其在一些滑動控制元件上面。該屬性生效的要求如下:首先子檢視的內容非常多,已經超過父容器,並且子檢視和付容器檢視都有overflow:hidden風格樣式。

【注】關於上面一些方法的具體使用,後面在講到事件響應者的時候會進行著重講解。

()View風格Style介紹

React Native中的Style風格佈局,其實和CSS樣式有很多相似的地方,這邊介紹一下:

Style標籤

說明

Style標籤

說明

FlexBox

transforms

backfaceVisibility

enum('visible', 'hidden')定義介面翻轉的

時候是否可見

backgroundColor

背景顏色

borderColor

邊跨顏色,這邊幾個就是代表上下左右變寬的顏色

borderTopColor,borderRightColor

,borderBottomColor,borderLeftColor

borderRadius

邊框圓角大小,其他幾個是上下左右邊框的圓角.borderTopLeftRadius,borderTopRightRadius,borderBottomLeftRadius,

borderBottomRightRadius

borderStyle

邊框線的風格,這個和CSS樣式一樣的

,enum('solid', 'dotted', 'dashed')

borderWidth

邊框寬度,另外四個是上下左右的邊框寬度:borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth

opacity

設定透明度

overflow

設定內容超過容器顯示還是隱藏

elevation

高度,設定Z軸,可以產生立體效果

下面是幾個特殊的屬性,這邊直接介紹所有平臺通用以及只在Android平臺有效果的屬性

.testID  (全平臺)

可以根據該testID在測試的時候定位該View

:accessibilityComponentType(android平臺)

定義是否該UI元件和原生元件一致化處理

.accessibilityLiveRegionenum('none','polite','assertive') (android平臺)

該當View發生更新時候的,是否需要通過使用者,不過該只對Android4.4以及以上的平臺裝置有效果

.collapsable (android平臺)

佈局合併優化使用

.importantForAccessibility enum('auto','yes', 'no', 'no-hide-descendants') (android平臺)

設定檢視響應事件等級

.needsOffscreenAlphaCompositing (android平臺)

設定View是否需要渲染和半透明度效果處理的先後次序。

.renderToHardwareTextureAndroid (android)

設定是否需要GPU進行渲染

()最後總結

今天我們主要介紹了基礎控制元件View的使用方法以及相關屬性風格,大家有問題可以加一下群React Native技術交流群(282693535)或者底下進行回覆一下。

       關注我的訂閱號(codedev123),每天分享移動開發技術(Android/IOS),專案管理以及部落格文章!(歡迎關注,第一時間推送精彩文章)

     關注我的微博,可以獲得更多精彩內容

      

相關推薦

React Native開發React Native控制元件View檢視講解(7)

轉載請標明出處:(一)前言      【好訊息】個人網站已經上線執行,後面部落格以及技術乾貨等精彩文章會同步更新,請大家關注收藏:http://www.lcode.org       現在幾講我們對於R

Android 開發:UI控制元件 ImageSwitcher 圖片切換控制元件的使用

1. ImageSwitcher 概要 1). ImageSwitcher 控制元件可以用在不同的影象之間切換,其中切換的過程可以採用動畫的方法,如淡入淡出的效果。 2). ImageSwitcher 需要一個影象工廠(ViewFactory)來建立用於顯示影象的Ima

React Native開發React Native控制元件Image元件講解與美團首頁頂部效果例項(10)

轉載請標明出處:(一)前言        【好訊息】個人網站已經上線執行,後面部落格以及技術乾貨等精彩文章會同步更新,請大家關注收藏:http://www.lcode.org      今天我們一起來看一下Image元件的相關使用講解以及模仿實現一下美團首頁頂部分類的效果。具體環境搭建以及相關配置的請檢視之前

React Native開發React Native控制元件TextInput元件講解與QQ登入介面實現(11)

轉載請標明出處:(一)前言      【好訊息】個人網站已經上線執行,後面部落格以及技術乾貨等精彩文章會同步更新,請大家關注收藏:http://www.lcode.org       今天我們一起來看一下文字輸入框TextInput元件的相關使用講解以及模仿實現一下QQ登入介面的效果。具體環境搭建以及相關配置

React Native開發React Native控制元件ListView元件講解以及最齊全例項(19)

轉載請標明出處:(一)前言        【好訊息】個人網站已經上線執行,後面部落格以及技術乾貨等精彩文章會同步更新,請大家關注收藏:http://www.lcode.org今天我們一起來看一下ListView元件的使用詳解以及具體事例剛建立的React Native技術交流3群(496508742),Rea

React Native開發React Native控制元件RefreshControl元件詳解(21)

轉載請標明出處:(一)前言         【好訊息】個人網站已經上線執行,後面部落格以及技術乾貨等精彩文章會同步更新,請大家關注收藏:http://www.lcode.org        今天我們一起來看一下RefreshControl下拉重新整理元件講解以及使用例項剛建立的React Native技術交

React Native開發React Native控制元件DrawerLayoutAndroid抽屜導航切換元件講解(13)

轉載請標明出處:(一)前言      【好訊息】個人網站已經上線執行,後面部落格以及技術乾貨等精彩文章會同步更新,請大家關注收藏:http://www.lcode.org       今天我們一起來看一

React Native開發React Native控制元件Switch開關與Picker選擇器元件講解以及使用(16)

轉載請標明出處:(一)前言       【好訊息】個人網站已經上線執行,後面部落格以及技術乾貨等精彩文章會同步更新,請大家關注收藏:http://www.lcode.org       今天我們一起來看

React Native開發React Native控件ProgressBarAndroid進度條解說(12)

ice 發現 來講 top 文章 func dev all ios 轉載請標明出處:http://blog.csdn.net/developer_jiangqq/article/details/50596367本文出自:【江清清的博客】(一)前言 【好消息】

我的Android進階自定義控制元件使用ViewPager實現可以預覽的畫廊效果,並且自定義畫面切換的動畫效果的切換時間

我們來看下效果 在這裡,我們實現的是,一個ViewPager來顯示圖片列表。這裡一個頁面,ViewPage展示了前後的預覽,我們讓預覽頁進行Y軸的壓縮,並設定透明度為0.5f,所有我們看到gif最後,左右兩邊的圖片有點朦朧感。讓預覽頁和主頁面有主從感。我們用分

PyQt5-Qt Designer工具箱(QToolBox)控制元件的使用

工具箱(QToolBox)+toolButton+tabWidget 總體介紹 QToolBox類提供了一列選項卡的小部件(選項卡內含專案)。   工具箱是一個小部件,它將選項卡一個一個的顯示,當前專案顯示在當前選項卡下方。每個選項卡在選項卡列中都有一個索引位置。一個選項卡的專案是一個QWi

.Net碼農修改WebBrowser控制元件的核心解決方案

首先說一下原理 當下很大瀏覽器他們都是用了IE的core, 這個core只提供HTML/JS的執行和渲染,並沒有給出關於介面和一些特性上的事,所以開發自己瀏覽器如果基於IE core需要自己完成這些內容。 一張圖很好的說明了這個情況,IE瀏覽器的架構:http://msdn.microsoft.com/e

duilib進階自定義控制元件響應指定命令

duilib在UIManager.h裡的EVENTTYPE_UI列舉裡定義了很多控制元件命令,如字元輸入、雙擊、滑鼠離開等等,然而這些事件不是在所有控制元件上都會得到處理,所以當我們有需要響應這些事件而對應的原生控制元件又沒有處理時,那就要自己派生一個控制元件去處理這個的事

FastDev4Android框架開發AndroidAnnnotations注入框架使用最佳實踐SharedPreferences(十七)

轉載請標明出處:  (一).前言:    前面我們已經對於AndroidAnnotations使用Adapters和lists做了講解,今天我們開始具體學習一下使用DI框架SharedPrefe

React Native開發關於fetch方法設定cookie

一般來說,在網上隨便搜一下,都會有文章說fetch方法預設是不攜帶cookie的,要想攜帶cookie, 需要新增: credentials: 'include' 例如: fetch(url, { method: 'POST', headers: {

React Native開發關於UTC格式時間轉換為時間戳的問題

問題背景: 需要將UTC格式的時間字串(形如2018-10-30T07:00:00+0000)轉換為時間戳(形如1540882800) 問題描述: var time=new Date("2018-10-30T07:00:00+0000"); 發現release(sto

React Native開發

很多時候我們需要在App中嵌入一個活動頁面我們需要不定時的開始一個活動,又不定時的結束一個活動。如果使用Native 開發,需要更新APP,這對應使用者來說,是很不好的體驗,因此,我們可以藉助WebV

React Native開發- 觸控事件處理

1.介紹 React Native提供了可以處理觸控事件的元件。觸控即點選、長按、滑動、縮放。 2.點選 處理點選操作事件,可以使用Touchable類元件,通過此類元件的onPress屬性實現點選事

巨能坑react-native的大坑,不定期更新

注:寫頁面時,當子元件是<Text>時一定不要固定父元件的寬高。 ----------------------------------------------------------------------------------------------

RN踩坑React-native 0.45版本以上出現 boost_1_63_0.tar.gz等錯誤

請先下載第三方依賴檔案 下下來後請放置到 ~/.rncache 目錄 比如你可以開啟終端,輸入 # 井號表示註釋,不要複製井號開頭的句子 # 進入~目錄,即使用者目錄 cd ~