Home Web Front-end HTML Tutorial React Native 0.23 iOS: 体验灵活的flexbox布局UI_html/css_WEB-ITnose

React Native 0.23 iOS: 体验灵活的flexbox布局UI_html/css_WEB-ITnose

Jun 21, 2016 am 08:51 AM

React Native使用CSS3中的 flexbox 做布局,比如我们实现这样一个简单布局界面。

如下图(纵向):

横向:

布局逻辑是这样的:

  • 3行,第一行高度固定50pt,第二行占剩余空间的四分之三,第三行占剩余空间的四分之一。
  • 在第二行中,又包含3列元素,每一列元素各占三分之一的空间,并且根据内容水平居中。在垂直排版上,第一列向下对其,第二列居中,第三列拉伸。

Component代码:

class FlexboxLayout extends Component {    render() {        return (            <View style={styles.container}>                <View style={styles.row1}></View>                <View style={styles.row2}>                    <Text style={styles.cell1}>1</Text>                    <Text style={styles.cell2}>2</Text>                    <Text style={styles.cell3}>3</Text>                </View>                <View style={styles.row3}></View>            </View>        );    }}
Copy after login

主要工作在Style设置上,一些实现上需要注意的地方,首先3行的实现上,如果是固定高度,只需要设置 height 即可,值是数字,代表iOS中的点,如果是比例,则需要设置 flex 值,按照上面的样子,第二行占四分之三, flex 值是3,第三行占四分之一, flex 值是1.

接着是第二行中三列View的实现,React Native中 flexDirection 默认是 column 即纵向排列,所以这里需要手动设置 flexDirection 为 row ,这样才会横向排列。然后三列会横向居中,这个要设置 justifyContent 为 space-around , justifyContent 实际上对应CSS3中flexbox里的 justify-content 属性,具体的flexbox属性以及其效果建议看参考 CSS-Tricks 。

样式代码:

const styles = StyleSheet.create({    container: {        flex: 1,    },    row1: {        height: 50,        backgroundColor: '#09A9DE'    },    row2: {        flex: 3,        backgroundColor: '#09DE53',        flexDirection: 'row',        justifyContent: 'space-around',        alignItems: 'center'    },    row3: {        flex: 1,        backgroundColor: '#DEDE09'    },    cell1: {        backgroundColor: '#BDBDBD',        padding: 20,        alignSelf: 'flex-end'    },    cell2: {        backgroundColor: '#BDBDBD',        padding: 20    },    cell3: {        backgroundColor: '#BDBDBD',        padding: 20,        alignSelf: 'stretch'    }});
Copy after login

最后对于每列纵向的对其,可以设置父View的 alignItems 属性,可以把这个值当做排列时的默认值,我们这里设置为 center ,这样三列都会默认纵向居中,而上图中的实现,第一列和第三列分别是下对其和拉伸,和默认值是不一样的,这样的话,可以通过手动设置子View的 alignSelf 属性,所以第一列的 alignSelf 值是 flex-end ,第三列的 alignSelf 值是 stretch .

最后,个人觉得,暂且不去比较整个React Native和原生Native(这个话题太大),只去比较这个flexbox布局和目前iOS开发的Autolayout布局,前者可以说是更优于后者的。事实上,在实际使用Autolayout中确实会遇到很多问题,比如一些比较复杂的页面在Xcode Interface Builder中编辑或者去阅读其他人的Autolayout约束会显得比较困难,再比如在代码中使用Autolayout时,不同团队可能会选择不同的Autolayout代码框架,这也会造成一定麻烦。

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Difficulty in updating caching of official account web pages: How to avoid the old cache affecting the user experience after version update? Difficulty in updating caching of official account web pages: How to avoid the old cache affecting the user experience after version update? Mar 04, 2025 pm 12:32 PM

The official account web page update cache, this thing is simple and simple, and it is complicated enough to drink a pot of it. You worked hard to update the official account article, but the user still opened the old version. Who can bear the taste? In this article, let’s take a look at the twists and turns behind this and how to solve this problem gracefully. After reading it, you can easily deal with various caching problems, allowing your users to always experience the freshest content. Let’s talk about the basics first. To put it bluntly, in order to improve access speed, the browser or server stores some static resources (such as pictures, CSS, JS) or page content. Next time you access it, you can directly retrieve it from the cache without having to download it again, and it is naturally fast. But this thing is also a double-edged sword. The new version is online,

How do I use HTML5 form validation attributes to validate user input? How do I use HTML5 form validation attributes to validate user input? Mar 17, 2025 pm 12:27 PM

The article discusses using HTML5 form validation attributes like required, pattern, min, max, and length limits to validate user input directly in the browser.

What are the best practices for cross-browser compatibility in HTML5? What are the best practices for cross-browser compatibility in HTML5? Mar 17, 2025 pm 12:20 PM

Article discusses best practices for ensuring HTML5 cross-browser compatibility, focusing on feature detection, progressive enhancement, and testing methods.

How to efficiently add stroke effects to PNG images on web pages? How to efficiently add stroke effects to PNG images on web pages? Mar 04, 2025 pm 02:39 PM

This article demonstrates efficient PNG border addition to webpages using CSS. It argues that CSS offers superior performance compared to JavaScript or libraries, detailing how to adjust border width, style, and color for subtle or prominent effect

What is the purpose of the <datalist> element? What is the purpose of the <datalist> element? Mar 21, 2025 pm 12:33 PM

The article discusses the HTML &lt;datalist&gt; element, which enhances forms by providing autocomplete suggestions, improving user experience and reducing errors.Character count: 159

What is the purpose of the <meter> element? What is the purpose of the <meter> element? Mar 21, 2025 pm 12:35 PM

The article discusses the HTML &lt;meter&gt; element, used for displaying scalar or fractional values within a range, and its common applications in web development. It differentiates &lt;meter&gt; from &lt;progress&gt; and ex

How do I use the HTML5 <time> element to represent dates and times semantically? How do I use the HTML5 <time> element to represent dates and times semantically? Mar 12, 2025 pm 04:05 PM

This article explains the HTML5 &lt;time&gt; element for semantic date/time representation. It emphasizes the importance of the datetime attribute for machine readability (ISO 8601 format) alongside human-readable text, boosting accessibilit

What is the purpose of the <progress> element? What is the purpose of the <progress> element? Mar 21, 2025 pm 12:34 PM

The article discusses the HTML &lt;progress&gt; element, its purpose, styling, and differences from the &lt;meter&gt; element. The main focus is on using &lt;progress&gt; for task completion and &lt;meter&gt; for stati

See all articles