iOS Swift UI 绘制第一个UI界面

1 篇文章 0 订阅

Swift UI 简介

苹果开发者大会 WWDC 2019 在北京时间今天凌晨开幕,对于开发者来说最吸引人的就是新发布的 SwiftUI ,在 苹果公司软件工程高级副总裁Craig Federighi的演示中,我们可以轻松地把一百行的前端代码缩减到十几行。

Swift UI 特点

1、省略了很多逗号,return,中括号等,声明式编程
2、出现了 很多关键词 例如 Some 等
3、终于使用 Flex Box 布局了
4、出现了 PreviewProvider 类似 安卓的xml 提供预览数据
5、支持简单的逻辑控制,比如 if 控制语句
6、与 Swift 已有的语法不冲突

其实熟悉Flutter开发的小伙伴应该对SwiftUI并不陌生,他其实和Flutter的布局有部分的相似。

今天主要讲解用Swift UI 绘制一个最简单的登录界面,首先看一下效果图

下面是实现的代码:

//
//  ContentView.swift
//  Demo
//
//  Created by wql on 2021/9/29.
//

import SwiftUI

struct ContentView: View {
    @State private var user_name = "" // 用户名输入框的内容
    @State private var user_password = ""  // 密码输入框的内容
    var body: some View {
        VStack(alignment: .center){
            Image("ic_login_bg").resizable()
                .frame(width: UIScreen.main.bounds.width, height: 265.0).aspectRatio(contentMode: .fit) // 设置头部的背景图
            VStack{ // 竖向排版,{ }里的内容自动剧中竖向排版
                HStack{ // 横向排版,{ }里的内容自动剧中横向排版 
                    Image("ic_login_name").resizable()
                        .frame(width: 18, height: 20).aspectRatio(contentMode: .fill).padding(EdgeInsets.init(top: 12, leading: 25, bottom: 5, trailing: 10)) // 设置账号图标
                    TextField("账号", text: $user_name).padding(EdgeInsets.init(top: 12,leading: 0, bottom: 5, trailing: 10)).font(.system(size: 14)) // 设置账号输入框
                }
                Divider()
                    .background(Color.gray) //分割线的默认颜色为灰色,此处设置分割线的默认颜色为紫色
                    .scaleEffect(CGSize(width: 1, height: 0.5)) //分割线高度放大10倍
                    .padding(EdgeInsets.init(top: 0, leading: 25, bottom: 0, trailing: 25)) // 下划线
            }
            VStack{
                HStack{
                    Image("ic_login_password").resizable()
                        .frame(width: 18, height: 20).aspectRatio(contentMode: .fill).padding(EdgeInsets.init(top: 12, leading: 25, bottom: 5, trailing: 10)) // 设置账号图标
                    TextField("密码", text: $user_password).padding(EdgeInsets.init(top: 12,leading: 0, bottom: 5, trailing: 10)).font(.system(size: 14)) // 设置密码输入框
                }
                Divider()
                    .background(Color.gray) //分割线的默认颜色为灰色,此处设置分割线的默认颜色为紫色
                    .scaleEffect(CGSize(width: 1, height: 0.5)) //分割线高度放大10倍
                    .padding(EdgeInsets.init(top: 0, leading: 25, bottom: 0, trailing: 25))
            }
            
            // 登录按钮 
            Button(action: {
                print("哈哈哈哈")
            }) {
                Text("按钮")
            }.frame(width: UIScreen.main.bounds.width - 50, height: 48, alignment: .center).padding(EdgeInsets.init(top: 0, leading: 0, bottom: 0, trailing: 0)).background(Color.blue).accentColor(.white).cornerRadius(24).offset(x: 0, y: 70)
            Spacer()//充满空白区域
        }.edgesIgnoringSafeArea(.top)
    }
    
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
            .previewDevice("iPhone 12 Pro")
    }
}

 到此就完成了一个页面的简单绘制,可以看出整个一个UI绘制还是非常简单,当然也可以拖拽,看大家自己的喜好。

 Swift UI最低支持的版本是iOS13,如果你的用户需要支持更低的版本,那么还是老老实实的使用Swift 或者 OC吧

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【课程特点】1、231节大容量课程:包含了SwiftUI的大部分知识点,详细讲解SwiftUI的方方面面;2、15个超级精彩的实例:包含美食、理财、健身、教育、电子商务等各行业的App实例;3、创新的教学模式:手把手教您SwiftUI用户界面开发技术,一看就懂,一学就会;4、贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标;5、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间;6、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索;7、齐全的学习资料:提供所有课程的源码,在Xcode 11 + iOS 13环境下测试通过; 更好的应用,更少的代码!SwiftUI是苹果主推的下一代用户界面搭建技术,具有声明式语法、实时生成界面预览等特性,可以为苹果手机、苹果平板、苹果电脑、苹果电视、苹果手表五个平台搭建统一的用户界面。SwiftUI是一种创新、简单的iOS开发中的界面布局方案,可以通过Swift语言的强大功能,在所有的Apple平台上快速构建用户界面。 仅使用一组工具和API为任何Apple设备构建用户界面。SwiftUI具有易于阅读和自然编写的声明式Swift语法,可与新的Xcode设计工具无缝协作,使您的代码和设计**同步。自动支持动态类型、暗黑模式、本地化和可访问性,意味着您的**行SwiftUI代码已经是您编写过的非常强大的UI代码了。 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王 哪跑!!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值