android button 文字 换行,UIButton 文字换行的一种方案

本文介绍了如何在UIButton中设置文字换行,并解决垂直方向上的大小问题。通过创建CompactButton子类,重写intrinsicContentSize和layoutSubviews方法,确保按钮大小随titleLabel换行内容自动调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时,需要设置UIButton中文字的换行,来满足按钮的多样化。

例如:点击按钮跳转设置「地理位置」,完成后,地理位置显示在按钮上。

通常,会设置按钮内的titleLabel可以换行:

button.titleLabel?.numberOfLines = 0

button.titleLabel?.lineBreakMode = .byWordWrapping

这样设置的titleLabel在「水平方向」会使UIButton跟随其扩大,但在「垂直方向」反而会超出UIButton的大小,并不会对UIButton进行高度的增加。

如果需要UIButton的大小跟随titleLabel换行而改变,可以采取自定义UIButton的方式:

import UIKit

class CompactButton: UIButton {

override var intrinsicContentSize: CGSize {

titleLabel?.numberOfLines = 0

var size: CGSize = self.bounds.size

if let titleLabel = self.titleLabel {

size = CGSize(width: self.bounds.width + self.titleEdgeInsets.left, height: titleLabel.bounds.height)

}

return size

}

override func layoutSubviews() {

super.layoutSubviews()

titleLabel?.numberOfLines = 1

var preferredMaxLayoutWidth = self.bounds.width - self.titleEdgeInsets.left

if let imageView = self.imageView {

preferredMaxLayoutWidth -= imageView.bounds.width

}

titleLabel?.preferredMaxLayoutWidth = preferredMaxLayoutWidth

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值