昨天成功的放上imageView以及标题,今天来把其他的栏位放上~
private let scrollView: UIScrollView = {
let scrollView = UIScrollView()
scrollView.clipsToBounds = true
return scrollView
}()
在iOS中,滚动视图(scroll view)是用来浏览无法在整个画面容下的其他内容。滚动视图有两个主要用途:
提供使用者拖曳至他们想要呈现的内容区域
提供使用者使用手指缩放手势来对所呈现的内容放大或缩小
也就是说,透过scroll view,我们可以完整的把登入/注册页面装不下的所有栏位透过滑动的方式让使用者看到。
view.addSubview(scrollView)
然後在viewDidLoad
中加入新增的这个scrollview。
因为没有特别需要缩放的设定,因此这样就可以了!
接着回到LoginViewController class中新增我们需要的栏位如下
private let emailField: UITextField = {
let field = UITextField()
field.autocorrectionType = .no
field.autocapitalizationType = .none
field.returnKeyType = .continue
field.layer.cornerRadius = 12
field.layer.borderWidth = 1
field.layer.borderColor = UIColor.lightGray.cgColor
field.placeholder = "Email Address"
field.leftView = UIView(frame: CGRect(x: 0, y:0, width: 5, height: 0)) // padding
field.leftViewMode = .always
field.backgroundColor = .white
return field
}()
private let passwordField: UITextField = {
let field = UITextField()
field.autocorrectionType = .no
field.autocapitalizationType = .none
field.returnKeyType = .done
field.layer.cornerRadius = 12
field.layer.borderWidth = 1
field.layer.borderColor = UIColor.lightGray.cgColor
field.placeholder = "Password"
field.leftView = UIView(frame: CGRect(x: 0, y:0, width: 5, height: 0)) // padding
field.leftViewMode = .always
field.backgroundColor = .white
field.isSecureTextEntry = true
return field
}()
大部分都是一些UI的设定。比较值得注意的是returnKeyType
会影响键盘的return键显示。因此,在这边password是最後一栏,我们就把return key type设定为.done
~
然後如前一个做法,我们把新增的栏位放入scroll view当中。
scrollView.addSubview(emailField)
scrollView.addSubview(passwordField)
稍微调整一下UI的显示
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
scrollView.frame = view.bounds
let size = scrollView.width/3
imageView.frame = CGRect(x: (scrollView.width-size)/2,
y: 20,
width: size,
height: size)
emailField.frame = CGRect(x: 30,
y: imageView.bottom+10,
width: scrollView.width-60,
height: 50)
passwordField.frame = CGRect(x: 30,
y: emailField.bottom+10,
width: scrollView.width-60,
height: 50)
}
最後一个是提交的按钮,我们先把UI做出来。
希望的情境是,在使用者按下按钮後,可以把相对的资料传送到後端资料库做登入/注册。
private let loginButton: UIButton = {
let button = UIButton()
button.setTitle("Sign In", for: .normal)
button.backgroundColor = .link
button.setTitleColor(.white, for: .normal)
button.layer.cornerRadius = 12
button.layer.masksToBounds = true
button.titleLabel?.font = .systemFont(ofSize: 20, weight: .bold)
return button
}()
好了之後就加入scroll view的subview。
scrollView.addSubview(loginButton)
今天的内容也是没有很长,实在不知道按照这个节奏能不能把app写完XDD
说实在的,我也不知道自己到底有没有喜欢写app。平常写後端都没有介面,因此能看到画面是蛮好玩的啦,但有时也蛮琐碎的,就有点讨厌,哈哈。
若上述内容有误或可以改进的部分,欢迎留言以及提出任何指教~
谢谢 o(〃^▽^〃)o
>>: Day12 - 【概念篇】OAuth flows: flows这一小段路上路前注意事项
哈罗大家好~ 今天要简单说明 “ Power Automate “ 这个强大的流程引擎以及示范一个用...
今天要跟大家介绍不是技术,但是蛮重要问题处理流程与纪录功能,这也是 Zabbix 本身就有的功能~ ...
今天这个范例是来自第三方套件 utility-types,在有了前几天的知识後,让我们来试着了解这...
「你因为两个原因来读这本书:首先,你是位程序设计师。再者,你想成为一位更好的程序设计师」 取自: ...
类似PHP的while回圈,计算其後的布林条件如果是值为true则执行大括号下面的语法,会重复条件的...