首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS:UIButton根据文本长度调整大小

iOS中的UIButton是一种用户界面元素,用于在应用程序中创建可点击的按钮。根据文本长度调整按钮大小是一种常见的需求,可以通过以下步骤实现:

  1. 获取按钮的文本内容:可以使用UIButton的titleLabel属性来获取按钮上显示的文本内容。
  2. 计算文本的长度:可以使用NSString的size(withAttributes:)方法来计算文本的长度。该方法需要传入一个字典参数,用于指定文本的字体和其他属性。
  3. 根据文本长度调整按钮大小:根据计算得到的文本长度,可以设置按钮的frame属性来调整按钮的大小。可以使用UIButton的frame属性来获取或设置按钮的位置和大小。

以下是一个示例代码,演示如何根据文本长度调整UIButton的大小:

代码语言:swift
复制
import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let button = UIButton(type: .system)
        button.setTitle("Button", for: .normal)
        
        // 计算文本长度
        let text = button.titleLabel?.text ?? ""
        let font = button.titleLabel?.font ?? UIFont.systemFont(ofSize: 17)
        let attributes = [NSAttributedString.Key.font: font]
        let textSize = (text as NSString).size(withAttributes: attributes)
        
        // 调整按钮大小
        let buttonWidth = textSize.width + 20 // 增加一些边距
        let buttonHeight = button.frame.height
        button.frame = CGRect(x: button.frame.origin.x, y: button.frame.origin.y, width: buttonWidth, height: buttonHeight)
        
        view.addSubview(button)
    }
}

在这个示例中,我们首先创建了一个UIButton,并设置了按钮的文本内容为"Button"。然后,我们使用按钮的titleLabel属性获取按钮上的文本内容,并使用NSString的size(withAttributes:)方法计算文本的长度。最后,根据文本长度调整按钮的宽度,并将按钮添加到视图中显示出来。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

bootstrap 响应式表格 根据设备调整大小

1.3K20
  • 完美解决UIButton imageView大小控制问题,完美适配iOS13系统图标的降级方案

    在进行iOS应用开发的时候,经常会用到带有图标的按钮。...最新的图标用起来固然爽,但是需要自己考虑向下兼容 可以看到,这个组件在iOS12或者更早时是无效的,我们如果在代码中用到相关的接口来获取图片对象时,同样也会告警处理低版本兼容问题。...使用图片降级方案时,按钮中图片大小成为烦恼 我们知道按钮中的图标,一般需要随着按钮的大小而自动调整,而在xcode中,我们将图片资源设置到对应的storyboard 或是 代码中的 imageView,...UIButton.setImage 都会出现,图片保持了原图的大小这样的问题,并且还是被拉伸的状态。...下面是我的解题思路和方程式: 既然苹果是自动计算的,那我也自己也来自动计算一下图片的大小好了~ extension UIButton{ // 使用SF图标 size期望图标大小 为空自动计算最佳大小

    1.5K20

    iOS开发小技巧:根据文本,字体,计算UILabel高度及宽度

    需求: 根据字符串,字体,计算UILabel宽度 根据字符串,字体,宽度,计算UILabel高度 2....context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0); 参数解释 size: 宽高限制,用于计算文本绘制时占据的矩形块...options: 文本绘制时的附加选项。可能取值请参考“NSStringDrawingOptions”。 attributes: 文本绘制时用到的AttributedString的属性。...包括一些信息,例如如何调整字间距以及缩放。最终,该对象包含的信息将用于文本绘制。该参数一般为 nil 。 返回值: 一个矩形,大小等于文本绘制完将占据的宽和高。...练习题:封装一个根据字体,字符串,宽度等参数得到高度的方法?

    5.3K10

    iOS UI控件了解一下

    iOS中用UIView来表示视图,App中能看到的元素,都是UIView及其子类,通俗的说各种UI控件都属于view,不同的控件代表不同种类的view。iOS中所有能看到的内容都是view或其子类。...blueView release]; UIView作为所有可视化控件的BaseClass,提供了许多属性和方法:显示效果控制(frame、alpha等)、视图添加和移除(addSubview: 等)、视图层次调整...当一个view设置bounds时,会把自己当成一个容器,定义自己的边界大小以及左上角的初始坐标。当子视图添加到此视图时,会根据bounds指定的原点(0,0)计算frame,而非左上角。...5)文本显示: UITextField提供了许多API方便我们控制文本的显示,包括字体颜色、对齐方式、占位符等等(详见下表) ?...(按钮)的属性及其使用,其他控件的使用都是类似的,了解了各种UI控件的属性及开发使用之后,就可以在测试用例设计及UI相关测试中,更精准地设计测试用例,针对每一类UI控件根据其属性设计特定的测试方法。

    2.6K20

    1.注册或登录页面设计:UILabel,UIButton,UITextField

    作为iOS开发的入门总结的第一篇,这里以最常见的注册或登陆页面设计作为开篇,这里主要会用到UILabel,UIButton,UITextField这三个控件。...contentVerticalAlignment text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; //设置为YES时文本会自动缩小以适应文本窗口大小....默认是保持原来大小,而让长文本滚动 textFied.adjustsFontSizeToFitWidth = YES; //设置自动缩小显示的最小字体大小 text.minimumFontSize...优化的键盘,方便输入@、#字符 UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, } UIKeyboardType; 有时需要限制输入文本长度...//限制输入文本长度 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString

    2.4K50

    IOS开发基础系列】UIButton专题

    上的图片和文字位置调整 http://blog.csdn.net/yongyinmg/article/details/8566365 UIButton中setTitleEdgeInsets和setImageEdgeInsets...UIControlStateNormal];     //设置button的title button.titleLabel.font = [UIFont systemFontOfSize: 16];    //title字体大小...cancelButtonTitle: @"ok" otherButtonTitles: nil];     [alertView show]; } 效果图:我这里使用的image是64*64的 1.1.6.2 网上代码2 iOS...,如果文字长度变化会导致图片位置变动的问题,最开始采用了网上比较多的做法,做法如下: @interface UIButton (UIButtonExt)  - (void) centerImageAndTitle...intDEFAULT_SPACING = 6.0f;      [self centerImageAndTitle: DEFAULT_SPACING];   }  @end         后面经过测试,如果button的文字长度变更

    30510

    iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    Clip Subviews : 是否裁剪子控件, 当该控件包含多个子控件, 并且这些子控件超出了父类容器, 勾选后, 超出部分就不会被绘制; -- Autoresize Subviews : 是否自动调整子控件大小..., 如果勾选, 该控件大小改变时, 其子控件也会随之调整大小; (7) Streching 属性 Streching 属性 : -- 主要作用 : 用于控制 UIView 拉伸区域, 只有在需要调整控件大小并重绘控件时才需要定义拉伸区域...* button = [UIButton buttonWithType : UIButtonTypeRoundedRect]; // 设置按钮大小 button.frame = CGRectMake...* button_add = [UIButton buttonWithType:UIButtonTypeRoundedRect]; // 设置按钮位置大小 button_add.frame...* button_delete = [UIButton buttonWithType:UIButtonTypeRoundedRect]; // 设置按钮的位置大小 button_delete.frame

    4.9K30

    iOS 9人机界面指南(四):UI元素(下)- 腾讯ISUX

    API注释 想要了解如何在代码中定义信息按钮,可以参考UIButton. iOS包含了两种信息按钮样式:适用于浅色内容上的深色按钮,以及适用于深色内容上的浅色按钮。...4.3.12圆角矩形按钮 iOS7及更新版本中已经不再使用圆角矩形按钮,而是使用了新的系统按钮——类型为UIButtonTypeSystem的UI按钮 (UIButton) 。...为了保证每个分段的大小有至少44×44像素,请控制分段的数量。在iPhone上,1个分段控件最多包含5个分段。 尽可能地保持每个分段中的文字长度一致。...因为每个分段都是等宽的,当文本长度差异很大时看上去会很不协调。 不要在同一个分段控件中混用文字和图片。每一个分段都仅可支持纯文字或纯图片。...4.3.14 滑块 滑块允许用户在一个限定范围内调整某个数值或进程(下图展示的是iOS设置中亮度设置的滑块,滑块的左边和右边均为自定义图形)。 ?

    13.2K30

    iOS-UI控件之UIButton

    ---恢复内容开始--- UIButton 既可以显示图片,又可以显示文字,还能随时调整内部位置 系统自带尺寸 storyboard内部调整UIButton属性 状态 监听按钮点击事件 凡是继承自UIControl...(void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state UI_APPEARANCE_SELECTOR; 自定义UIButton...UIButton内部有两个子控件 UILabel和UIImageView 调整控件内部子控件的frame(两种方式) 实现 titleRectForContentRect 和 imageRectForContentRect...图片的拉伸,大小改变 iOS5之前 // 只拉伸中间的1x1区域 //传入左上的距离的区域 - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger...)leftCapWidth topCapHeight:(NSInteger)topCapHeight; iOS5开始 //传入左上右下不拉伸的区域,默认方式是平铺 - (UIImage *)resizableImageWithCapInsets

    92860

    iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )

    对象库; 2.上拉扩展 对象库 面板 大小 : 将 鼠标移动到 对象库 面板的上边缘, 可以 扩大 对象库 面板框 大小; ---- ( 2 ) iOS 常用 控件 iOS 常用控件 : 1.UILabel...: 文本标签 控件, 显示 一个 字符串 文字; 2.UIButton : 按钮 控件, 可设置 点击事件监听器, 监听到 用户 点击后 进行一个操作 ; 3.UITextField : 文本输入框...: Label 标签 是文本显示标签, 只能单纯的显示文本, 不能进行操作; 如果在 storyboard 界面修改文本标签, 该标签会自动缩放到刚好包裹文本大小; 依次拖入两个 Label, 然后双击控件...标签 , 根据 tag 执行不同的逻辑 ; 控件关联的方法 , 是否传入 UIButton 控件 , 在于是否需要获取 按钮 相关资源 , ---- ( 6 ) 关闭自动布局 ( ① 选中 ViewController...)changeRandomColor:(UIButton *)sender{} ; ② 获取父控件 : 根据 按钮 点击方法传入的 按钮控件, 获取其父控件, UIView * superView

    4.9K30

    UIButton实现各种图文结合的效果以及原理

    iOSUIButton是一个非常常见而且常用的控件,我们一般用他来实现某个功能的提交以及选择操作。...UIButton*本身就是一个复合控件,他分别提供了两个属性: @property(nonatomic,readonly,retain)UILabel *titleLabel NS_AVAILABLE_IOS...那既然UIButton本身就带有一个图片控件和文本控件,那是不是我们只要分别通过调整子控件的frame值就能实现我们想要的图片文字的任何布局呢? 答案是否定的。...图片在左,文字在右,整体居中,设置间距 这种方式是按钮默认的图文布局方式,因为要调整图片和文本的间距,所以只需要文本右移padding/2而图片左移padding/2值就可以了。...(ImageTitleStyle) /* 调整按钮的文本和image的布局,前提是title和image同时存在才会调整

    2.9K10

    iOS项目——自定义UITabBar与布局

    在上一篇文章iOS项目——基本框架搭建中,我们详细说明了如何对TabBarItem的图片属性以及文字属性进行一些自定义配置。...·解决方案 对于类似新浪微博和我们项目中这种情况有两种解决思路: 定义5个TabBarItem,然后在TabBar上添加一个与TabBarItem等大小的发布按钮在最中间,并添加点击事件,这样因为大小相等...forKeyPath:@"tabBar"]; } @end   下面的代码是我们自定义TabBar的.m文件的主要内容,主要是重写其 layoutSubviews 方法,在该方法中我们是将四个按钮的大小和布局进行了调整..._publishButton) { UIButton *publishButton = [UIButton buttonWithType:UIButtonTypeCustom];...在iOS的TabBarItem是自带该属性和控件的,我们可以根据自己的需求进行配置,下图是iOS11中的配置文档,可以对提示数量、颜色进行自定义设置,还可以对提示文字的属性进行不同状态下的配置。

    3K90

    自定义UISearchController的外观

    然而在开发中,我们往往需要根据项目的风格来改变UISearchBar的外观,通过继承的方式,我们可以完全定制符合项目风格的外观,然而有些情况下我们很难短时间内完成全部的外观定制工作,譬如我们项目用的好几个旧框架...SDK提供的UISearchBar,在iOS7之前是分为UISearchBarBackground、UISearchBarTextField、UIButton这几个类的实例组成,而在iOS7之后,是将...UIButton转换为了UINavigationButton的实例。...removeFromSuperview]; } } 去掉搜索框边框 [_searchController.searchBar setBackgroundImage:[UIImage new]]; 改变输入框文本...//提示文本颜色 UITextField*searchField = [_searchController.searchBar valueForKey:@"_searchField"]; [searchFieldsetTextColor

    1.7K20
    领券