iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >SwiftUI登录界面布局实现示例详解
  • 880
分享到

SwiftUI登录界面布局实现示例详解

2024-04-02 19:04:59 880人浏览 安东尼
摘要

目录引言页面分析-元素构成实战编程-背景图片实战编程-说明文字实战编程-登录方式实战编程-辅助文字本章小结引言 为了更好地了解和学习SwiftUI,我们快速学习SwiftUI的三种基

引言

为了更好地了解和学习SwiftUI,我们快速学习SwiftUI的三种基本布局:HStack水平布局容器VStack垂直布局容器、ZStack层叠布局容器。

在实际开发过程中,登录页面是移动端产品必不可少的页面,也是很好的练手项目

接下来,我们将用10分钟来构建一个登录页面布局,以下面UI设计稿为例:

页面分析-元素构成

采用自顶向下的设计思想拆解UI设计稿的元素,可以得到以下的信息:

  • 背景图片:使用Image基本组件,需要拉伸全屏,其他元素在图片内部
  • 说明文字:两段大小不一致的文字垂直布局组成,对齐方式为左对齐
  • 登录方式:两个填充色和文字颜色不一致的按钮垂直布局组成,对齐方式为居中对齐
  • 辅助文字:由文字和文字按钮横向布局组成

拆解完页面元素后,接下来将按照页面元素及其布局方式进行代码编程。

实战编程-背景图片

在SwiftUI编程项目中有两种展示图片的方式,一种是通过网络请求获得的图片URL再在本地加载图片,一种是导入准备好的图片直接使用。

前者可以根据请求数据的不同更新图片,后者较常用于基本不怎么需要变化的页面背景等业务场景中。

登录界面属于后者,因此我们可以直接在Xcode开发工具中导入需要的图片。

点击视图工具栏的Assets.xcassets文件,点击底部“+”图标,选择Import,如下弹窗所示:

选择图片后导入,导入完成后,可以看Assets的预览区看到导入的图片。

为了方便后续的使用,这里将图片重命名为bgImage,如下图所示:

回到ContentView文件,这是SwiftUI提供的一个示例视图页面,我们使用Image图片组件引用导入的图片,示例:

struct ContentView: View {
    var body: some View {
        Image("bgImage")
    }
}

SwiftUI图片组件使用方式为括号内,使用双引号对对象进行引用,这里Image组件引用的对象是在Assets资源库导入的bgImage图片。

实时预览后发现,由于图片尺寸大于整机屏幕尺寸,导致图片超出了可视范围。这时需要图片的常用修饰符对Image图片进行修饰,示例:

Image("bgImage")
    .resizable()
    .edgesIgnoringSafeArea(.all)

这里使用了2个修饰符,resizable修饰符可以对Image图片进行缩放,使图片缩放到模拟器显示范围内。

edgesIgnoringSafeArea修饰符可对视图忽略其安全区域,这时iPhoneX以上全面屏的特性,在顶部状态栏和底部栏的区域留有安全区域,edgesIgnoringSafeArea可以忽略安全区域,让Image图片撑开整个屏幕。

实战编程-说明文字

文字部分使用Text组件,和Image组件使用方法类似,在括号内使用双引号引用文本信息,示例:

Text("开启你的意识世界")

当我们使用Text组件时,预览区域展示了2个模拟器,这是因为之前创建的Image组件和Text组件缺少布局关系,Xcode开发工具就将它们当作单独的视图分开预览。

由上面分析得知,背景图片和其他元素是层叠关系,因此需要使用到ZStack容器将多个元素进行层叠布局。

ZStack{
    Image("bgImage")
        .resizable()
        .edgesIgnoringSafeArea(.all)
    Text("开启你的意识世界")
}

视图容器的使用方式是用大括号将元素包裹在一起,包裹中的元素将符合视图容器的排列方式。

说明文字有2部分,2段文字排列方式为上下排列,由于文字字数不一,使用左对齐方式。代码如下:

VStack(alignment: .leading, spacing: 10){
    Text("开启你的意识世界")
    Text("首次登录自动创建新账号")
}

VStack垂直布局容器中,修改视图的对齐方式及视图内部元素之间的间距视图括号包裹,alignment参数设置视图内元素的对齐方式,这是使用的是leading左对齐。

spacing参数设置视图内所有元素的间距,如果同样是垂直布局的元素间距不一样,则需要多个VStack垂直布局容器进行包裹。

和Image图片组件修饰符使用方法一样,可以对Text添加修饰符对文字对象进行修饰,代码如下:

VStack(alignment: .leading, spacing: 10){
    Text("开启你的意识世界")
        .font(.title)
        .bold()
    Text("首次登录自动创建新账号")
        .font(.system(size: 17))
}

font修饰符可以对Text文字的字号、字体进行修饰,bold修饰符可以设置文字的字重,另外常用的文字修饰符像foregroundColor修饰符可以设置文字的填充颜色等。

实战编程-登录方式

登录方式由2个登录按钮组成,登录按钮的布局方式也是垂直布局,并且2个按钮采用的是居中对齐方式。除了考虑登录方式按钮本身外,还需要考虑登录方式和说明文字的布局方式,此部分代码如下:

VStack(alignment: .leading, spacing: 400) {
    //说明文字
    //登录方式
    VStack(alignment: .center, spacing: 15) {
        Button(action: {}) {
            Text("手机号码登录")
                .font(.system(size: 17))
                .bold()
                .frame(minWidth: 0, maxWidth: .infinity)
                .padding()
                .foregroundColor(.white)
                .background(.red)
                .cornerRadius(8)
        }
        Button(action: {}) {
            Text("微信登录")
                .font(.system(size: 17))
                .bold()
                .frame(minWidth: 0, maxWidth: .infinity)
                .padding()
                .foregroundColor(.black)
                .background(.white)
                .cornerRadius(8)
        }
    }
}.padding()

在说明文字和登录方式两块元素上,这里使用VStack垂直布局容器,并设置视图内对齐方式为左对齐,说明文字和登录方式视图的间距为400。

登录方式视图分为2个按钮:手机号码登录、微信登录,按钮使用到的组件是Button组件,由于Button组件的使用方式如下:

Button(action:{
    //点击后操作
}) {
    //按钮样式
}

Button组件样式上和其他组件一致,即任何视图都可以作为按钮,这里使用的是Text文字视图作为按钮的主体样式,并设置文字修饰符对Text视图进行修饰美化。

其中,frame修饰符可以设置组件的尺寸大小,由于iOS机型和显示区域不一,因此使用minWidth最小宽度和maxWidth最大宽度,最大宽度maxWidth设置为infinity自适应。

padding修饰符设置文字的边距,background修饰符将Text文字视图背景包括撑开边距的布局填充颜色,cornerRadius修饰符设置圆角度数。

这里值得注意的是,修饰符的顺序决定了样式,先赋于视图的修饰符具有优先权,比如background修饰符在前,padding修饰符在后,则按钮就会只有文字背后一点点位置填充了颜色,而无法实现现在的效果。

实战编程-辅助文字

最后是辅助文字部分,分析后可以拆分成4段:登录即代表同意(文字)、用户协议(按钮)、(文字)、隐私政策(按钮),并且这四段内容采用水平布局方式。

另外还需要考虑与其他元素的布局关系,由上至下是登录方式视图,辅助文字视图和登录方式视图是垂直布局关系。此部分代码如下:

VStack(alignment: .center, spacing: 40) {
    //登录方式视图
    //辅助文字视图
    HStack {
        Text("登录即表明同意")
            .foregroundColor(.white)
        Button(action: {}) {
            Text("用户协议")
        }
        Text("和")
            .foregroundColor(.white)
        Button(action: {}) {
            Text("隐私政策")
        }
    }
}

本章小结

恭喜你,完成了第一个SwiftUI页面!

在本章节中,我们学了三种基本的页面布局方式:HStack水平布局、VStack垂直布局、ZStack层叠布局,并学习了基本组件Image图片组件、Text文本组件、Button组件的使用,当然目前我们只完成了页面样式部分,功能交互还有待完善,但迈出这一步后,后面的SwiftUI学习之路会好走很多。

希望大家能除了看文章之外,也能沉下来敲敲代码,当一个又一个页面在指尖上飞舞,相信你也会有信心和兴趣深入了解SwiftUI,了解它的简约之美。

更多关于SwiftUI 登录界面布局的资料请关注编程网其它相关文章!

--结束END--

本文标题: SwiftUI登录界面布局实现示例详解

本文链接: https://www.lsjlt.com/news/167604.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SwiftUI登录界面布局实现示例详解
    目录引言页面分析-元素构成实战编程-背景图片实战编程-说明文字实战编程-登录方式实战编程-辅助文字本章小结引言 为了更好地了解和学习SwiftUI,我们快速学习SwiftUI的三种基...
    99+
    2024-04-02
  • SwiftUI 引导页界面实现示例
    目录引言页面分析-元素构成实战编程-创建项目实战编程-引导图片实战编程-引导文字实战编程-引导按钮实战编程-轮博滚动整体效果-预览本章小结引言 当用户首次启用App时,客户端应用常常...
    99+
    2024-04-02
  • 微信小程序实现登录界面示例
    本文实例为大家分享了微信小程序实现登录界面的具体代码,供大家参考,具体内容如下 注:这里使用的是原生微信小程序 使用wxss和wxml index.wxml文件中代码 <vie...
    99+
    2024-04-02
  • PHP登录界面实例
    登录 来源地址:https://blog.csdn.net/m0_58464499/article/details/129665250...
    99+
    2023-09-03
    php
  • Android Studio 实现登录和注册功能的实现及界面布局介绍
    Android Studio 实现登录和注册功能的实现及界面布局介绍 在 Android Studio 中实现登录和注册功能是开发安卓应用程序中常见的任务。本文将介绍如何通过编写代码实现这两个功能,并...
    99+
    2023-10-23
    android studio android ide Android
  • Java Swing布局管理器详解:掌控界面布局
    FlowLayout FlowLayout 是一种简单的布局管理器,它将组件水平排列,直到达到容器的边缘,然后换行。组件的大小由其首选大小决定。 BorderLayout BorderLayout 将容器划分为五个区域:北部、南部、西部、...
    99+
    2024-04-02
  • DirectUI界面布局怎么实现
    DirectUI是微软提供的一种用户界面布局技术,可以用于开发Windows桌面应用程序。在DirectUI中,界面布局的实现可以通...
    99+
    2023-10-18
    DirectUI
  • python通过PyQt5实现登录界面的示例代码
    目录1. pyQt5简单使用 安装 界面化操作 2.开始实现登录界面今天为大家介绍一个利用开发登录界面模板,基于pyqt5库,pyqt5这也一个PythonGUI界面开发的库,非常强...
    99+
    2024-04-02
  • jsp实现登录界面
    本文实例为大家分享了jsp实现登录界面的具体代码,供大家参考,具体内容如下 一.用户登录案例需求: 1.编写login.jsp登录页面 username & pas...
    99+
    2024-04-02
  • vue实现登录界面
    使用Vue实现简单的用户登录界面,登录成功以后查询账号用户类型进行相应的页面路由跳转,效果如下图所示: HTML部分: <div class="loginbody"> ...
    99+
    2024-04-02
  • antd Vue实现Login登录页面布局案例详解 附带验证码验证功能
    效果 Login页面 <!-- * @Author: Jackie * @Date: 2022-05-07 14:34:06 * @LastEditTime: 2022...
    99+
    2024-04-02
  • Android Studio——实现登录界面
    Android Studio——实现登录界面 在移动应用开发中,登录界面是一种常见的设计需求。通过使用Android Studio,我们可以轻松实现一个简单且美观的登录界面。本文将介绍如何使用Andr...
    99+
    2023-09-25
    android studio android ide Android
  • python selenium实现登录豆瓣示例详解
    使用python爬虫selenium访问豆瓣https://www.douban.com/,实现模拟登录过程。 网页界面如图所示 首先导包后,定位图中 密码登录 的element,...
    99+
    2024-04-02
  • iOS界面布局简化UIStackView使用详解
    目录前言UIStackView布局思想distribution:alignment:UIStackView用法初始化添加、删除子视图排列方向布局方式对齐方式间距前言 在过去iOS页面...
    99+
    2024-04-02
  • react.js实现页面登录跳转示例
    1,页面目录信息: 2,从index.js导入路由信息BasicRoute.js,然后BasicRoute.js中存储App.js和StatisticsInformation.js...
    99+
    2023-01-31
    react.js登录跳转 react.js页面跳转
  • Vue实现简单登录界面
    本文实例为大家分享了Vue实现简单登录界面的具体代码,供大家参考,具体内容如下 实现: 界面实现表单规则校验结合后台 api 校验提示消息 App.vue <template&...
    99+
    2024-04-02
  • Android studio实现app登录界面
    本文实例为大家分享了Android studio设计app登录界面,供大家参考,具体内容如下 UI界面设计 在设计登录界面时,可以使用不同布局方式来实现该功能,通常情况下使用的是Li...
    99+
    2024-04-02
  • vue如何实现登录界面
    本文小编为大家详细介绍“vue如何实现登录界面”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue如何实现登录界面”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果如下图所示:HTML部分:<div&nb...
    99+
    2023-07-02
  • jsp如何实现登录界面
    本文小编为大家详细介绍“jsp如何实现登录界面”,内容详细,步骤清晰,细节处理妥当,希望这篇“jsp如何实现登录界面”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一.用户登录案例需求:编写login.jsp登录页...
    99+
    2023-07-02
  • java实现登录注册界面
    本文实例为大家分享了java实现登录注册界面的具体代码,供大家参考,具体内容如下 数据库设计 既然只是一个登录和注册的界面,数据库方面就只设计一个Admin表,表内有三个值。 id...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作