为了账号安全,请及时绑定邮箱和手机立即绑定

请问关于swift 有什么函数可以获取到view的宽度?

请问关于swift 有什么函数可以获取到view的宽度?

慕雪6442864 2019-09-23 16:12:52
swift 有什么函数可以获取到view的宽度
查看完整描述

4 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

因为题主这两个 View 之间是用 Segue 连接的,所以可以给第一个 View 中加入
prepareForSegue 方法来实现此功能。举个例子,我有两个 View,第一个叫做 View Controller,第二个叫做 Second View Controller,分别对应 ViewController.swift 和 SecondViewController.swift,则:

Main.storyboard 的结构:

(注意两个 View 之间要用 Modal 类型的 Segue 来连接,如果使用 Push 而且没有相应的 Navigation Controller 的话程序会停止响应)

ViewController.swift 的内容(其实仅仅加了一个 prepareForSegue 方法):

SecondViewController.swift 的内容:

最后程序运行的结果:

在第一个 View 中输入:

点击 Send 按钮后在第二个 View 中显示:




查看完整回答
反对 回复 2019-09-25
?
Qyouu

TA贡献1786条经验 获得超11个赞

在viewController里 增加一个IBOutlet 链接到你的自定义的view。
获取一下它的frame属性就知道它的高宽了。
setFrame来设置它的高宽

查看完整回答
反对 回复 2019-09-25
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

其实动态获取字符串NSString的内容宽度高度最主要的还是API NSString类提供的一个方法:
sizeWithFont: constrainedToSize

例如:
CGSize feelSize = [feeling sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(190,200)];
float feelHeight = feelSize.height;
这样就可以根据自己定义的长高的最大限值来获取当前文本的size。


查看完整回答
反对 回复 2019-09-25
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

//初始化label
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];
//设置自动行数与字符换行
[label setNumberOfLines:0];
label.lineBreakMode = UILineBreakModeWordWrap;
// 测试字串
NSString *s = @"这是一个测试!!!
UIFont *font = [UIFont fontWithName:@"Arial" size:12];
//设置一个行高上限
CGSize size = CGSizeMake(320,2000);
//计算实际frame大小,并将label的frame变成实际大小
CGSize labelsize = [s sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];
[label setFrame:CGRectMake:(0,0, labelsize.width, labelsize.height)];
。。





查看完整回答
反对 回复 2019-09-25
  • 4 回答
  • 0 关注
  • 390 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信