1,View,UI的構建基石
四個方向,水平,水平倒序,垂直,垂直倒序
flexGrow與flex的區別,flexgrow是分父布局剩余的空間,flex是分父布局全部的空間
上面的是flexgrow 123
下面的是flex 123
設置了flex后,width會失效
margin padding height width都可以用百分比, borderwidth不能用百分比
上述代碼,position:'absolute’和left:30必須連用,才不受父布局影響,如果去掉left:30,那么父布局的alignItems將生效
主軸與top/bottom關系同理。
onLayout返回該組件在父布局中的位置,onLayout的參數有一個event,event中有一個nativeEvent,nativeEvent如下
當寬高位置發生變化后,會回調onLayout方法,如下圖代碼所示
onLayout的用法,動態獲取寬高
如果組件的屬性,比如寬高等使用useState更新,會導致界面的重繪。
而,setNativeProps不會
Text組件
1,text 的fontsize最好是雙數
2,text的fontweight,在Android中,小于500的是normal,大于500的是bold,安卓中只有這兩種情況
3,fontFamily:字體無法用代碼創建,對應的是一個文件
上面是正常的字體,下面的是CustomFont字體。
一般情況下,我們不會自定義漢字字體,因為漢字有幾萬個,用的比較多的是數字字體
4,
5,
Text默認是無法選中的,如果想選中,如下設置
6,
可以不包裹Pressable
7,
8,文字嵌套
嵌套文字不支持margin和padding屬性
9,
textAlign是水平,textAlignVertical是垂直
10,
solid表示實線,安卓中只支持solid
11,
三個屬性要一起使用,注意textShadowRadius,它的意思是虛化。最好不要太小,比如1
三:Image
1,本地圖片
2,網絡圖片
3,縮放模式,圖片寬高和Image寬高不是等比的時候生效
contain:等比例拉伸,直到寬或高和組件大小一樣
center:如果組件比圖片大,不做改動,如果組件比圖片小,圖片縮放
cover:寬和高都適配
stretch:不保持比例的拉伸
5,
6,
debug情況下,defaultSource是不顯示的,release顯示
7,
8,
打印輸出如下
9,
如果加載失敗,只會回調onLoadStart,不會回調onLoadEnd
10,
png圖片有透明通道,它在著色的時候,會覆蓋所有的非透明區域
11,
這是命令式UI,需要使用useRef
prefetch是通過Promise的方式回調。多用在加載一個大的圖片,可以存在本地磁盤,下一次加載會快
四ImageBackground = View+Image
ImageBackground集成了View的布局功能和Image的加載圖片功能。
可以看見,ImageBackground有兩個style ,一個是加載布局樣式,一個是加載圖片樣式。
它有ref和imageRef兩個實行
TextInput:React Native唯一的輸入框
1,擁有Text的大部分屬性,比如fontSize,下劃線等。
2,
autoFocus為true的時候,界面加載成功會自動聚焦,同時彈出鍵盤,
如果用api命令的方式調用,就需要focus()+useRef
兩秒鐘后,輸入框聚焦,同時彈出鍵盤
3,
blurOnSubmit默認為true,點擊提交按鈕后,鍵盤會隱藏,同時失去焦點。如果設置為false,則不會。
用api控制失去焦點,上述代碼兩秒后失去焦點同時隱藏鍵盤
4,
當為true的時候,可以繼續輸入文字,但不會有光標。
5,
加載界面后,默認就會有文字
6,
當該值為false的時候,不能輸入文字,不會獲得焦點,不會彈出鍵盤
7,
上面列出的屬性,就是Android和IOS都支持的屬性,其它屬性還有很多,但不是雙平臺都支持。
8,
還有很多屬性,這里就不列出了
9,
10,
numberOfLines是顯示幾行,如果是2,無論你輸入多少內容都只顯示兩行
11
12,
onChange拿到的內容多,onChangeText只拿到文本。
13,
左閉右開
替換之前的輸入內容,場景:比如有一個搜索框,第一次搜索了,第二次在輸入搜索內容后,前一次的輸入內容會全部被選中,再輸入的時候會清空TextInput
14,
15,
注意,該屬性與multiline={true}連用的時候會失效