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

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

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

繁星淼淼 2019-08-16 14:10:27
swift 有什么函数可以获取到view的宽度
查看完整描述

4 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

因为题主这两个 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-08-24
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

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

查看完整回答
反对 回复 2019-08-24
?
DIEA

TA贡献1820条经验 获得超2个赞

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

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



查看完整回答
反对 回复 2019-08-24
?
撒科打诨

TA贡献1934条经验 获得超2个赞

//初始化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-08-24
  • 4 回答
  • 0 关注
  • 492 浏览

添加回答

举报

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