---------------------------------------------------------------------------------------------------
React.native是facebook开源的一套基于JavaScript的开源框架,
非常方便用来开发移动设备的app。

并且,方便及时更新app的UI与数据。也非常方便部署。
goodmao希望帮助大家迅速上手掌握。
----------------------------------------------------------------------------------------------------


參考:
源代码參考:Layout.h/.c文件
----------------------------------------------------------------------------------------------------



我们这一节,简介Reactbutton的使用。
目的是让大家在分分钟内理解并学会使用方法。

我相同也查看了n篇帖子和facebook的介绍贴(见上面链接),
一般来说,存在以下的问题:
1.无法直接让刚開始学习的人粘贴到demo代码中理解并使用,
2.不少帖子翻译和编写都有不完好甚至错误之处。

我都自己编程执行过,在这里的解说和案例,
为了方便大家,都专门编写了极其简单的样例,
但包括了最经常使用的、必须用的功能。




一、button简单介绍:
button是用户进行交互的一个控件,用户能够点击触发事件的发生,从而让App运行相应的功能。

(1)React的button有三种
    1.高亮触摸button TouchableHighlight
       按下时。button会有高亮效果。
       即在该button上系统设置了一个视图,
       当用户按下时。会让该视图变暗且透明度减少,提示用户该button被按下了。
    2.透明触摸button TouchableOpacity
       按下时,button视图。会呈现半透明效果。并能看到button的背景视图。
    3.无反馈触摸button TouchableWithoutFeedback
       按下时,button没有变化,但设置的响应方法会被系统调用。

(2)Reactbutton的事件处理
    button关联了四个事件:
    1.button按下事件:onPress          - 按下并松开button。会触发该事件
    2.button长按事件:onLongPress  - 按住button不松开,会触发该事件
    3.button按下事件:onPressIn       - 按下button不松开,会触发该事件
    4.button松开事件:onPressOut    - 按下button后松开,或按下button后移动手指到button区域外,都会触发该事件

(3)button表现形式
    1.文字button
    在button上设置文字

    2.图片button
    在button上设置图片
    图片来源。相同能够是直接加入到项目中的静态图片,也能够是来自网络的图片。

    关于图片设置。能够參考上一节Image的使用介绍。

二、button的用法

(1)设置模式和创建React变量
'use strict';

var React = require('react-native');

var {

  AppRegistry,
StyleSheet,
View,
Text,
Image,
//1.高亮触摸
TouchableHighlight,
//2.不透明触摸
TouchableOpacity,
//3.无反馈触摸
TouchableWithoutFeedback,
} = React;


(2)定义样式
var styles = StyleSheet.create({

  container: {
//flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'cyan',
}, size: {
width: 140,
height: 95,
}, buttonText: {
fontSize: 28,
color: 'white',
alignSelf: 'center'
}, button: {
width: 140,
height: 95,
//flex: 1,
//flexDirection: 'row', //子视图排成一行; 默认是排成一列
backgroundColor: 'blue',
borderColor: 'blue',
borderWidth: 1,
borderRadius: 8,
},
});

(3)创建组件对象
var HelloReact = React.createClass({

  //定义button响应事件处理方法
//1.按键按下
onPressed_btn() {
console.log('button pressed !');
}, //2.长按
onLongPress_btn() {
console.log('button onLongPress !');
}, //3.被按下时 - 按下button不松开,会触发该事件
onPressIn_btn() {
console.log('button onPressIn !');
}, //4.松开button时
//- 按下button后松开,或按下button后移动手指到button区域外
onPressOut_btn() {
console.log('button onPressOut !');
}, //1.高亮触摸 TouchableHighlight - 按下时。button会有高亮效果
//2.透明触摸 TouchableOpacity - 按下时,button会半透明并能看到背景
//3.无反馈触摸 TouchableWithoutFeedback - 按下时,button没有变化。但绑定的响应方法会被系统调用 //渲染方法
render : function() {
return ( <View style={styles.container}>
<TouchableHighlight style = {styles.button} onPress={this.onPressed_btn}>
<Image
source={require('image!goodmao')}
style={styles.size}
/>
</TouchableHighlight> <TouchableOpacity style = {styles.button} onPress={this.onPressed_btn}>
<Image
source={require('image!goodmao')}
style={styles.size}
/>
</TouchableOpacity> <TouchableWithoutFeedback style = {styles.button} onPress={this.onPressed_btn}>
<Image
source={require('image!goodmao')}
style={styles.size}
/>
</TouchableWithoutFeedback> </View>
);
} });

说明:
    1.定义了四个方法,用于处理button事件
       方法名字,自定义。注意可读性。
       a.按键按下 onPressed_btn( ) 
       b.长按 onLongPress_btn( )
       c.被按下时  onPressIn_btn( )
       d.松开button时 onPressOut_btn( )

     2.关联button事件与事件处理方法
        在button的属性中,指定button事件和相应的方法就可以。

           
 <TouchableHighlight
style = {styles.button}
onPress = {this.onPressed_btn}
onLongPress = {this.onLongPress_btn}
onPressIn = {this.onPressIn_btn}
onPressOut = {this.onPressOut_btn}
> <Text style={styles.buttonText}>我是按钮</Text>
</TouchableHighlight>


(4)注冊组件
AppRegistry.registerComponent('HelloReact', ()=>HelloReact);


(5)执行效果图
    1.三种button
    

    2.高亮button被按下
    

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFveWluZ3lvbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">


    3.透明button被按下
    

    4.无反馈button被按下
    


三、注意事项
(1)必须给button设置子视图
也就是说。button必须设置显示的文字或图片,否则会报错。
比如:
            <TouchableHighlight style = {styles.button} onPress = {this.onPressed_btn}>
                <Text style={styles.buttonText}>我是按钮</Text>
            </TouchableHighlight>
编译执行时,Xcode错误例如以下:
 message: Invariant Violation: onlyChild must be passed a children with exactly one child."

(2)设置文字button两种方法
<TouchableHighlight style = {styles.button} onPress = {this.onPressed_btn}>
<Text style={styles.buttonText}>我是按钮</Text>
</TouchableHighlight>
<TouchableHighlight style = {styles.button} onPress={this.onPressed_btn}>
<View style={styles.button}>
<Text style={styles.buttonText}>我是按钮</Text>
</View>
</TouchableHighlight>



【Facebook的UI开发框架React入门之九】button简单介绍(iOS平台)-goodmao的更多相关文章

  1. 【Facebook的UI开发框架React入门之八】Image的使用简单介绍(iOS平台)-goodmao

    --------------------------------------------------------------------------------------------------- ...

  2. iOS开发UI篇—多控制器和导航控制器简单介绍

    iOS开发UI篇—多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...

  3. UWP开发入门(九)——简单界面的布局技巧及屏幕适应

    嘿嘿嘿,题目比较绕哈.本篇主要讨论一般情况下,页面的布局技巧,怎么将元素的展现尽量做到分辨率无关.基本的思路仍然是尽量少的标定具体的数字,而是用比列来标注各元素占据的空间. 这里我打算用易信的名片页来 ...

  4. 文顶顶 iOS开发UI篇—UITabBarController简单介绍 iOS开发UI篇—UITabBarController简单介绍

    一.简单介绍 UITabBarController和UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型的例 ...

  5. Hive入门笔记---1.Hive简单介绍

    1. Hive是什么 Hive是基于Hadoop的数据仓库解决方案.由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建的数据仓库也秉承了这些特性.这是来自官方的解 ...

  6. SpringSecurity 3.2入门(6)简单介绍默认使用的十一个过滤器

    Security提供了20多个filter,每个过滤器都提供特定的功能.这些filter在Spring Security filter过滤器链中的缺省顺序由 org.springframework.s ...

  7. React入门教程(二)

    前言 距离上次我写 React 入门教程已经快2个月了,年头年尾总是比较忙哈,在React 入门教程(一)我大概介绍了 React 的使用和一些注意事项,这次让我们来继续学习 React 一. Rea ...

  8. React入门2

    React 入门实例教程 最简单开始学习 JSX 的方法就是使用浏览器端的 JSXTransformer.我们强烈建议你不要在生产环境中使用它.你可以通过我们的命令行工具 react-tools 包来 ...

  9. 基于React 的前端UI开发框架 及与Electron 的结合 https://cxjs.io/

    1.cxjs  基于React 的前端UI开发框架    https://cxjs.io/ coreu   http://coreui.io/ 2.antd-admin                ...

随机推荐

  1. POJ 1182 食物链 【并查集】

    解题思路:首先是没有思路的----然后看了几篇解题报告 http://blog.csdn.net/ditian1027/article/details/20804911 http://poj.org/ ...

  2. input标签type为number时,输入小数,在Firefox浏览器上输入框标红的问题

    问题一:firefox 下 默认情况 <input   type="number"> 只允许输入整数,输入小数时会报错,输入框被标红 这时候可以添加参数 step=&q ...

  3. 通过nodeSelector配置项实现pod部署至指定node

    Node节点添加标签 [root@node1 work]# kubectl label nodes node1 node=master --overwrite node/node1 labeled [ ...

  4. 【BZOJ 1588】 [HNOI2002]营业额统计

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每天的最小波动值指的是和之前所有天的差值的绝对值中的最小值. 用set.的lower_bound函数. 每次找和他差值最小的数字就好 ...

  5. 【转】C#添加修改删除文件文件夹大全

    [转]C#添加修改删除文件文件夹大全 C#添加修改删除文件文件夹大全 StreamWriter sw = File.AppendText(Server.MapPath(".")+& ...

  6. JS在页面限制checkbox最大复选数

    应该是挺简单的代码, 记录一下分享. 首先最直接的想法就是使用循环, 用局部变量记录已选的checkbox, 达到最大值就将余下的checkbox都禁止选择, 例如以下: <!DOCTYPE h ...

  7. mysql-数据库维护

    一.备份数据 1.使用mysqldump命令备份:前提:musql的版本必须一致. mysqldump -u username -p  --default -character-set=gbk dbn ...

  8. HDU 5344(MZL&#39;s xor-(ai+aj)的异或和)

    MZL's xor Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  9. WPF-MVVM-Demo

    MVVM The model-view-viewmodel is a typically WPF pattern. It consists of a view that gets all the us ...

  10. codeforces@281 B

    shui #include<iostream> #include<cstdio> #include<cstring> #include<algorithm&g ...