摘要:系统存在启动鱼销毁一个的一条有序的回调函数。一个,继承子所在应用进程的窗口管理器有一个主要用来管理窗口的一些状态,属性,增加,删除,更新,窗口顺序,消息收集和处理等。通过接口与全局窗口管理器进行交互界面控制和消息响应。
安装
iOS启动注意
在xcode项目代码中AppDelegate.m会标识入口文件。例如:jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle"]
闪屏界面在哪修改?
xcode项目中找到LaunchScreen.xib文件,就是启动界面。手动添加组件或修改文本即可。
文本编辑器打开index.ios.js文件,是js代码的入口文件,所有的代码编写从这开始,可以定义自己的模块和引入第三方模块。
原生知识点andriod的activity跳转
两个activity之间的跳转。
android中有一个比较重要的组件--activity,是用于显示View的。
比如:利用react创建简单的app,当一开打开app的时候,其实就进入了一个主的activity,由其渲染主界面(activity可以简单理解为浏览器的tab)。
andriod系统根据生命周期的不同阶段唤起对应的回调函数来执行代码。系统存在启动鱼销毁一个activity的一条有序的回调函数。
Acitivity: Activity包含一个Window,改window在Acitivity的attach方法中调用PolicyManager.makeNewWindow创建。
View:最基本的UI组件,表示屏幕上的一个矩形区域。
DecorView:是Window中的View的RootView,设置窗口属性。
Window:表示顶层窗口,管理界面的显示和事件的相应。每个Activity均会创建一个PhoneWinodw对象,是Activity和整个View系统交互的接口。
WIndowManager: 一个interface,继承子ViewManager.所在应用进程的窗口管理器;有一个implementtation WindowManagerImpl;主要用来管理窗口的一些状态,属性,view增加,删除,更新,窗口顺序,消息收集和处理等。
ViewRoot:通过IWindowSession 接口与全局窗口管理器进行交互:界面控制和消息响应。
ActivityThread:应用程序的主线程,其中会创建关联当前Activity于Window;创建WindowManager实现雷实例,把当前DecoView加入到WindowManager
react-native中的flex布局应用的6的属性
flexvar Text = React.createClass({ render() { return (); } }); var styles = StyleSheet.create({ style_0: { flex: 1, }, style_1: { flex: 5, height: 40, borderWidth: 1, borderColor: "red" } });
当一个组件(元素),定义了flex属性时,表示改元素是可伸缩的。
flex的属性值是大于0的时候伸缩,其小余和等于0的时候不伸缩,例如:flex: 0, flex: -1.
代码中:最外层的View是可伸缩的,因为没有兄弟节点和它占空间,占满全屏。里层是3个View,可以看到三个View的flex属性加起来是5+5+10 = 20.所以第一个View和第二个View分别占1/4伸缩空间,最后一个View占据1/2空间。
flexDireaction属性值:row, column
flexDirecation在React-Native只有两个属性: row(横向伸缩) ,column(纵向伸缩)
flexWrap属性值:
wrap,nowrap
alignItems属性值:
flex-start,flex-end,center,stretch
alignSelf横向对其方式:
flex-start,flex-end,center, stretch
justifyContent纵向对其方式:
flex-strat,flex-end,center,space-between,space-around
和普通的css不一样的地方
RN样式的属性名,需要使用驼峰式
应用于组件的style属性上的样式,可以不止一个,可以使用多个,以逗号分隔。如 style={styles.a, styles.b}
可以在样式中使用变量.
例如:需要一个元素的宽度等于屏幕的宽度。
const styles = StyleSheet.create({ container: { flex: 1, flexDireaction: "column", width: Dimensions.get("window").width } });定位
position top left bottom right布局
RN是border-box模型
width height margin padding border flex系列 marginVertical // 上下外留白的简写,如果marginTop和marginBottom一样。 marginHorizontal // 左右外留白的简写 paddingVertial paddingHorizontal背景
backgroundColor backgroundVisibility文字
color fontFamily fontSize fontStyle fontWeight textAlign textDecorationColor textDecorationLine textDecorationStyle letterSpacing lineHeight阴影
shadowColor 阴影色iOS only shadowOffset 阴影距离iOS only shadowOpaicty 阴影透明度iOS only shadowRadius 阴影半径 iOS only elevation 仰角 android only // 这是属性影响着元素的z-index,就是绝对定位时覆盖顺序,也会在元素上产生一个阴影。其它
opacity overflow resizeMode rotation scaleX scaleY transform transformMatrix translateX translateY writingDirection文本输入
constructor(props) { super(props); this.state = { text: "" } } render() { return (); } this.setStatet({text: textCount})} /> {this.state.text.split(" ").map((word) => word && "aaa").join()}
react-native布局的一些坑
不存在zIndex,后面的元素覆盖前面的元素。
内层元素覆盖外层元素。
borderRadius的设置,需要考虑到内层元素的位置。
flex为0,系统不会自动计算宽高。
View内部的元素不要超出父级的范围,iOS问题不大,andriod上就什么超出的都看不到了。
lineHeight可以用,不过不要写成小数,否则andriod上会直接崩溃。
RN的样式不存在继承的情况,所以基本上的每个节点都要写style。 (Text相关样式除外,Text嵌套的话,其文字属性也会应用于子元素)
如果Text的父级元素设置了背景颜色,那么iOS下Text的背景颜色也是父级的背景颜色,那么自己写Text重置下样式,那么就遇到了再改。
RN的字号是没有设置单位的,所以会随着系统设置的字体大小而变化。
RN的样式中的width/height的单位是DP
RN没有宽高100%的设置,所以如果需要让元素撑满屏幕 :
jsx语法
生命周期componentWillMount:组件创建之前
getInitialState:初始化状态
render:渲染视图
componentDidMount:渲染视图完成后
componentWillUnmount:组件被卸载之前
普通内联样式:{{}},第一层{}是表达式,第二层{}是js对象;
调用样式表:{样式类.属性}
样式表和内联样式共存:{[]}
多个样式表:{[样式类1, 样式类2]}
设置属性默认值
Recat.createClass({ getDefaultProps() { return { sign: "正在加载..." } } });事件绑定
class TestReact extends Component { construcotr(props) { super(props); this.state = { name: "a" } } changeState() { this.setState({ name: "b" }); } render() { return (); } } 当前状态是:{this.state.name}
把TouchEnd事件绑定在最外层View上。
注意:事件触发函数的上下文,默认就是本组件。 changeState中的this,就是指代的就是TestReact的实例.
refs属性
class TestReact extends Component { getPos() { this.res.position.measure((fx, fy, width, height, px, py) => { console.log("位置:", "x:", fx, "y:", fy); }); } render() { return (全局对象); } } 位置
在RN中,引用全局对象可以使用window或者global,它们都指向一个对象 -- DedicatedWorkerGlobalScope,,其中有jscore提供的方法,也有RN注入的方法.
propsProps属性
设置:在应用组件上传递key=val
获取:this.props.key
class Test exntds Compontent { render() { return (state); } } export default class FirstApp extned Componet { render() { return { HELLO {this.props.name} } } }
在constructor中初始化state,然后再需要修改时调用setState方法。
设置:this.setState({key: val})
获取:this.state.key
constructor(props) { super(props); this.state = { count: 0 } } doUpdateCount() { this.setState({count: this.state.count + 1}); }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/82682.html
摘要:是开源的,在和的基础上构建原生的和应用的平台。着力于提高多平台的开发效率,。下面简单介绍下的环境搭建。环境要求最新的系统,要开发应用就必须使用系统。运行在当前目录下会多出一个的目录,里面是项目的文件。 Any application that than can be written in JavaScript will eventually be written in JavaScri...
摘要:从到完美,用和写一个在年开源了后,紧接着在年就又开源了,就此打开了用和前端技术写原生之路。对应来看,程序只有两个部分,和,而部分则分为组件和。所以,在端的纯库无在中同样适用,如等。应用实例便是使用开发的一个日记。 从 1 到完美,用 js 和 react-native 写一个 APP facebook 在 2013 年开源了 react 后,紧接着在 2015 年就又开源了 react...
摘要:寒假结束了,在寒假期间玩了一下,模仿豆瓣实现了一个查看当前热门电影和即将上映电影的简单,项目比较简单,十分适合刚刚入门的同学查看。 寒假结束了,在寒假期间玩了一下react-native,模仿豆瓣实现了一个查看当前热门电影和即将上映电影的简单app,项目比较简单,十分适合刚刚入门的同学查看。首先我们要了解react-native: react-native中文网、react-nativ...
阅读 1788·2021-09-23 11:21
阅读 668·2019-08-30 15:55
阅读 795·2019-08-29 15:40
阅读 474·2019-08-29 12:56
阅读 3141·2019-08-26 12:00
阅读 3519·2019-08-23 18:24
阅读 2230·2019-08-23 17:08
阅读 1618·2019-08-23 17:03