gpt4 book ai didi

xcode - View 和 subview

转载 作者:行者123 更新时间:2023-11-30 10:04:32 25 4
gpt4 key购买 nike

我正在尝试放置一个带有 subview 的 View 。该 View 有一个图像和一个文本,它们是 subview ,但是当我运行该应用程序时,它不显示完整的文本。这是代码...

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

let ballonview = UIImageView()
let label = UILabel()
let turn = 1


ballonview.frame = CGRectZero

label.frame = CGRectZero
label.backgroundColor = UIColor.clearColor()
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.ByWordWrapping
label.font = label.font.fontWithSize(20)

let message = UIView()
message.frame = CGRectMake(-160, 48, view.frame.size.width, view.frame.size.height)
message.addSubview(ballonview)
message.addSubview(label)


let text: NSString = "hola como estas"

let size:CGSize = text.boundingRectWithSize(CGSizeMake(240.0, 480.0), options: NSStringDrawingOptions.UsesDeviceMetrics, attributes: [NSFontAttributeName: UIFont.systemFontOfSize(14.0)], context: nil).size


var ballon:UIImage = UIImage()


ballonview.frame = CGRectMake(320.0 - (size.width + 28.0), 2.0, size.width + 28.0, size.height + 15.0)
ballon = UIImage(named:"green.png")!.stretchableImageWithLeftCapWidth(24, topCapHeight: 15)
label.frame = CGRectMake(307.0 - (size.width + 5.0), 8.0, size.width + 5.0, size.height)

ballonview.image = ballon;
label.text = text as String
view.addSubview(message)

}

我能做什么?

最佳答案

这里的问题是您在测量大小和渲染时使用了不同的字体大小。

labelfont为20pt系统字体,用于测量size的字体为14pt系统字体。因此大小将比您预期的要小。

此外,如果您的角色具有长腿(例如 g),则绘图选项应更改为 NSStringDrawingUsesLineFragmentOrigin 以获得正确的尺寸。 >, j, y)。

引用:official NSString document .

我建议您更改测量尺寸的方式:

let size: CGSize = text.boundingRectWithSize(
CGSizeMake(240.0, 480.0),
options: .UsesLineFragmentOrigin,
attributes: [
NSFontAttributeName: label.font
],
context: nil
).size

因此它将与您用于渲染标签的字体相匹配。

希望这个回答对你有帮助。

关于xcode - View 和 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36817620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com