swift怎么在app界面上输出文字

swift怎么在app界面上输出文字,第1张

1

打开此系统之前我们创建的「PersonalAccounts」应用,并切换到「Main.storyboard」文件。

2

切换到主面板,并关闭左侧项目树

3

删除之前拖入的Label

4

打开之前你已经做好的设计样稿

END

绘制界面

首先,我们先画第一个界面,通过观察设计样稿知道,这个界面需要的控件有Label、Button、Image View、Table View。

根据设计样稿,我们将对应的控件从「对象仓库」中拖入对应的控件,并摆放到相应的位置中。

ps:Image View用于绘制设计样稿中的那个矩形框。Table View用于呈现明细列表。

从「对象仓库」中拖入3个「View Controller」用于绘制其他设计样稿中的界面。

分别绘制相应的界面。

ps:为了简单起见,在录入具体金额时,使用系统自带的键盘

1,文本框的创建,有如下几个样式:

UITextBorderStyle.none:无边框

UITextBorderStyle.line:直线边框

UITextBorderStyle.roundedRect:圆角矩形边框

UITextBorderStyle.bezel:边线+阴影

圆角矩形边框样例:

1

2

3

4

lettextField = UITextField(frame: CGRect(x:10, y:60, width:200, height:30))

//设置边框样式为圆角矩形

textField.borderStyle = UITextBorderStyle.roundedRect

self.view.addSubview(textField)

2,修改边框颜色、粗细、圆角半径

1

2

3

4

5

6

7

8

9

10

lettextField = UITextField(frame: CGRect(x:10, y:60, width:200, height:30))

//设置边框样式为圆角矩形

textField.borderStyle = UITextBorderStyle.roundedRect

self.view.addSubview(textField)

//修改圆角半径的话需要将masksToBounds设为true

textField.layer.masksToBounds = true

textField.layer.cornerRadius = 12.0  //圆角半径

textField.layer.borderWidth = 2.0  //边框粗细

textField.layer.borderColor = UIColor.red.cgColor //边框颜色

3,文本框提示文字

1textField.placeholder="请输入用户名"

4,文字大小超过文本框长度时自动缩小字号,而不是隐藏显示省略号

1

2

textField.adjustsFontSizeToFitWidth=true//当文字超出文本框宽度时,自动调整文字大小

textField.minimumFontSize=14  //最小可缩小的字号

5,水平/垂直对齐方式

1

2

3

4

5

6

7

8

9

/** 水平对齐 **/

textField.textAlignment = .right //水平右对齐

textField.textAlignment = .center //水平居中对齐

textField.textAlignment = .left //水平左对齐

/** 垂直对齐 **/

textField.contentVerticalAlignment = .top  //垂直向上对齐

textField.contentVerticalAlignment = .center  //垂直居中对齐

textField.contentVerticalAlignment = .bottom  //垂直向下对齐

6,背景图片设置

1

2

textField.borderStyle = .none //先要去除边框样式

textField.background = UIImage(named:"background1")

7,清除按钮(输入框内右侧小叉)

1

2

3

textField.clearButtonMode = .whileEditing  //编辑时出现清除按钮

textField.clearButtonMode = .unlessEditing  //编辑时不出现,编辑后才出现清除按钮

textField.clearButtonMode = .always  //一直显示清除按钮

8,密码输入框

1textField.isSecureTextEntry = true//输入内容会显示成小黑点

9,设置文本框关联的键盘类型

Default:系统默认的虚拟键盘

ASCII Capable:显示英文字母的虚拟键盘

Numbers and Punctuation:显示数字和标点的虚拟键盘

URL:显示便于输入url网址的虚拟键盘

Number Pad:显示便于输入数字的虚拟键盘

Phone Pad:显示便于拨号呼叫的虚拟键盘

Name Phone Pad:显示便于聊天拨号的虚拟键盘

Email Address:显示便于输入Email的虚拟键盘

Decimal Pad:显示用于输入数字和小数点的虚拟键盘

Twitter:显示方便些Twitter的虚拟键盘

Web Search:显示便于在网页上书写的虚拟键盘

数字键盘使用样例:

1textField.keyboardType = UIKeyboardType.numberPad

10,使文本框在界面打开时就获取焦点,并d出输入键盘

1textField.becomeFirstResponder()

11,使文本框失去焦点,并收回键盘

1textField.resignFirstResponder()

12,设置键盘 return 键的样式

1

2

3

4

5

6

textField.returnKeyType = UIReturnKeyType.done //表示完成输入

textField.returnKeyType = UIReturnKeyType.go //表示完成输入,同时会跳到另一页

textField.returnKeyType = UIReturnKeyType.search //表示搜索

textField.returnKeyType = UIReturnKeyType.join//表示注册用户或添加数据

textField.returnKeyType = UIReturnKeyType.next //表示继续下一步

textField.returnKeyType = UIReturnKeyType.send //表示发送

以发送样式(send)为例:

13,键盘 return 键的响应

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

importUIKit

classViewController: UIViewController,UITextFieldDelegate{

    overridefuncviewDidLoad() {

        super.viewDidLoad()

        lettextField = UITextField(frame: CGRect(x:10,y:160,width:200,height:30))

        //设置边框样式为圆角矩形

        textField.borderStyle = UITextBorderStyle.roundedRect

        textField.returnKeyType = UIReturnKeyType.done

        textField.delegate=self

        self.view.addSubview(textField)

    }

    functextFieldShouldReturn(_ textField: UITextField) ->Bool{

        //收起键盘

        textField.resignFirstResponder()

        //打印出文本框中的值

        print(textField.text ?? "")

        returntrue

    }

}

手动设置系统字体大小,App里面的字体能跟随发生变化,并有最大最小字体限制。

借助runtime,在app启动的时候交换方法实现。

特点:需要重启app才能生效。无侵入,只需要添加一个UIFont分类,并在appdelegate里面调用交换方法。对整体项目改动小。

① App内设置字体大小,选择字体后,发送通知。切回到你需要改变的界面上时,在收到通知的方法里改变当前界面字体。(微信)

② 调整系统字体大小,切换到App内,字体大小自动更改,用DynamicType实现(QQ)

特点:app内实时刷新。可以整体替换,第三方重新pod,但项目整体改动较多

③ 保存字体大小到本地,所有用到字体的地方实时获取或刷新

采用:app内实时刷新

2.1 整体全部手动替换,搜索所有的systemFont,改为xx_systemFont,第三方重新pod,但项目整体改动较多,有风险

2.2 几个核心页面做下适配,其他不管

采用:6个核心页面做下适配

添加一个UIFont分类,更改systemFont类方法的实现

1.注册一个字体改变的通知。选择字体后,发送通知。切回到你需要改变的界面上时,在收到通知的方法里改变当前界面字体。(微信)

2.用DynamicType实现(QQ)

效果:调整系统字体大小,切换到App内,字体大小自动更改

缺点:字体大小只能是给定的10种类型之一

3.保存字体大小到本地,所有用到字体的地方实时获取或刷新

全局替换系统字体方法,会有个问题:很多地方view大小没做适配。采用适配4、5个核心页面的方案。

实现方法:给UIFont分类添加新的方法,需要适配的地方把systemFont改为xx_systemFont即可

特点:哪里需要适配就改哪里,灵活度和自由度自己控制

1、Method 'initialize()' defines Objective C class method 'initialize', which is not permitted by Swift

Swift4开始废弃load方法和initital方法了,写个类方法交换实现,然后直接在appdelegate里面调用类方法即可。UIButton可行,但是UIFont不可行(UIFont是类方法,写错了就不生效)。

2、UIFont的systemFont设置了没生效,因为systemFont是类方法,写错了

3、百度到的一些方案遇到些问题UILabel的font方法获取不到,willMove(toSuperview:)会出现UIButtonLabel的情况,属性字符串的兼容情况等。

iOS10的一些玩意儿:Dynamic Type

Swift黑魔法 - Runtime


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7919794.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存