sizeToFit的学习与认知

今天一扫前两日的坏心情,终于有心情平静下来,今天我是根据网络上的一些资料进行学习,今天学习的内容是 sizeToFit() 方法在不方便手动布局的场景中的使用。

首先感谢资料的提供者:参考1 参考2 参考3

今天的主要是看到了一个方法,sizeToFit 方法,就上网搜了一下,重点是了解了一下该方法如何应用

首先:

在调用sizeToFit的时候,系统会根据内容帮我布局一个它认为合适的大小。sizeToFit()方法声明再UIView中,所以所有继承于UIView的控件都可以调用该方法。

sizeToFit()方法的使用场景:在一些不方便手动布局的时候使用,下面是一些不方便手动布局的场景:

  • 1.navigationBar中对navigationItem的设置,(添加两个视图以上的控件到Item)
  • 2. toolBar中的对UIBarButtonItem的设置(一般我们还要添加弹簧控件)

上述两种场合就可以用sizeToFit这个方法,来让系统给我们做自动布局。(注意:如果就添加一个控件的话,我们直接设置fram也是可以的)

  • 3.在tabBar中我们不能手动的添加子控件,因为tabBar  控制器系统默认自动添加的tabBarItem。(猜想系统可能也会自动调用了这个方法)
  • 4.UILabel中添加文字,然后让 lable 的大小来适应文字,我们也调用sizeToFit的方法

实现材料:通知、输入框、回收键盘、提示框

实验需求:首先判断输入框是否输入主题,如果没有输入,则提示,用户确定提示信息,让光标自动放入输入框,输入后用户点击键盘 return 键钮、或者是空白地方就回收键盘。

实现原代码:

#import "ViewController.h"

@interface ViewController ()<UITextFieldDelegate>
@property (weak, nonatomic) IBOutlet UITextField *textF;
@property (weak, nonatomic) IBOutlet UILabel *themsLable;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    //开启文本自适应大小
    self.themsLable.adjustsFontSizeToFitWidth = YES;
    //设置文本能够自动换行
    self.themsLable.numberOfLines = 0;//这一行的代码失效了

    //使用通知中心监听是否给文本框输入文字
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(cliectButton:) name:UITextFieldTextDidChangeNotification object:nil];

}

//添加主题,生成主题的方法
- (IBAction)addThems:(UIButton *)sender {
    if ([self.textF.text isEqualToString:@""] ) {
        //没有输入主题
        UIAlertController * alter = [UIAlertController alertControllerWithTitle:@"waring!" message:@"please input some thems,if you want add a theme please select first ,or select second ! thanks a lot !" preferredStyle:UIAlertControllerStyleActionSheet];
        UIAlertAction * action1 = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            //让当前的鼠标指向文本框,并弹出键盘
            [self.textF becomeFirstResponder];

        }];
        UIAlertAction * action2 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
        [alter addAction:action1];
        [alter addAction:action2];
        [self presentViewController:alter animated:YES completion:nil];

    }else{

        //设置 frame
        [self setFrame];

        }
}

//输入框里输入了文本
-(void)cliectButton:(NSNotification *)notify{

    self.themsLable.text = self.textF.text;
}

//重新指定 frame
-(void)setFrame{

    //使用sizeThatFit计算lable大小
    CGSize sizeThatFit=[self.themsLable sizeThatFits:CGSizeZero];
    //重新指定frame
    self.themsLable.frame=CGRectMake(10, 150, sizeThatFit.width, sizeThatFit.height);

}

//键盘的回收
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    [self.textF endEditing:YES];
}

//按下enter键钮就回收键盘
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    [self.textF endEditing:YES];
    return YES;
}

@end

注意:也可以先设置,label 的位置与大小,在输入框中输入文字后,由通知中心去改变lable 的 frame,关键代码:[self.lable sizeToFit];

效果图:

      

这个小小的技术可能会用在一些情况下,保证页面的美观性。

时间: 2024-12-20 21:51:54

sizeToFit的学习与认知的相关文章

增强学习、增量学习、迁移学习——概念性认知

一.增强学习/强化学习(Reinforcement Learning ) 我们总是给定一个样本x,然后给或者不给label y.之后对样本进行拟合.分类.聚类或者降维等操作.然而对于很多序列决策或者控制问题,很难有这么规则的样本.比如,四足机器人的控制问题,刚开始都不知道应该让其动那条腿,在移动过程中,也不知道怎么让机器人自动找到合适的前进方向.另外如要设计一个下象棋的AI,每走一步实际上也是一个决策过程,虽然对于简单的棋有A*的启发式方法,但在局势复杂时,仍然要让机器向后面多考虑几步后才能决定

学习与认知方法

互联网工具多不胜数,知识海洋浩瀚如海.掌握每个工具,学习每个知识点非常的不现实,所以有必要掌握方法,需要时直接提取资源即可.将学习和应用的过程抽象后有以下图片.每当学习完成一个工具后和知识后只要通过这个图像,不依赖书本或者视频及其他资源可以具象出所学的知识即可.工程化应用则是相反的.是对学习过程的回溯

蓝鸥零基础学习HTML5—html+css基础

蓝鸥零基础学习HTML5-html+css基础 一.课程目标 1.了解前端开发职位:2.掌握常用标签以及语义及用法:3.掌握常用css的特性,掌握基础布局技巧:4.掌握整站规划概念. 二.适用人群 零基础积极学习html5者 三.课程简介 本课程主要讲解了 html+css的基础知识,包括html模板.标签.css基础样式.布局.表格表单.整站等等,是进行前端开发的基础.Html+css是前端开发的基础,大部分前端开发工程都需要从html+css布局开始,html+css的基础非常重要,是前端开

人工智能、机器学习和认知计算入门指南

几千年来,人们就已经有了思考如何构建智能机器的想法.从那时开始,人工智能 (AI) 经历了起起落落,这证明了它的成功以及还未实现的潜能.如今,随时都能听到应用机器学习算法来解决新问题的新闻.从癌症检测和预测到图像理解和总结以及自然语言处理,AI 正在增强人们的能力和改变我们的世界. 现代 AI 的历史包含一部伟大的戏剧应具有的所有要素.上世纪 50 年代,随着对思维机器及阿兰·图灵和约翰·冯·诺依曼等著名人物的关注,AI 开始崭露头角.尽管随后经历了数十年的繁荣与萧条,并被寄予了难以实现的厚望,

[深度学习]Wake-Sleep算法

本文翻译自2007-To recognize shapes, first learn to generate images, Geoffrey Hinton. 第五种策略的设计思想是使得高层的特征提取器能够和底层的进行通信, 同时可以很容易地使用随机二态神经元的分层网络来实现. 这些神经元的激活概率是关于总输入的一个平滑非线性方程: 其中si和sj是神经元i和j的活跃度(activity), wij是i和j的权值, bj是j的偏置. 图1 如果训练数据是使用图1中类型的多层图像模型从上到下生成的

数据库认知

近几年的流行热词"大数据时代"是由著名的麦肯锡咨询公司提出的概念,是的,现代社会是信息爆炸的时代,数据作为信息的载体,其重要性不言而喻.那么数据库作为保存数据的容器,我们又该如何来学习和认知呢? 什么是数据库?这个问题应该不难回答,通俗的说,就是能储存数据的仓库.但是,仅仅存储是不够的,早期的人工管理和文件系统数据库,存在数据文件相互独立.数据冗余.查询不便.逻辑独立性差等缺点,所以数据库一定是按照某种特定的组织结构长期存储在计算机系统中并能共享访问的数据集合. 现代社会数据文件规模日

足够的经历去旁证你的认知

有足够的经历去旁证你的认知(内化的语言),有足够的语言区描述你的经历 http://www.kmcenter.org/html/s75/200511/22-2595.html ------------ 在本文中,我们分析了认知.信念体系(belief systems)与制度之间的互动关系,并探寻了它们影响经济绩效的方式.我们认为要更深刻地理解制度的产生.其运行的特征(property)及其对经 济政治结果的影响,应该从对认知过程的分析开始.我们分析了个人和集体学习的性质,认为问题并不在于行为体(

学习swift语言的快速入门教程推荐

随着苹果产品越来越火爆,苹果新推出的swift必定将在很大程度上代替oc语言.学好swift语言,对于IOS工程师来讲,已经是一门必备技能. 有一些比较好的英文版教程,值得学习. 1. Swift Tutorial for Beginners 在这个教程里,你可以学习一些iOS代码编写的新方法. 2. The Swift Programming Language 英文 中文 这是苹果官方出的iOS应用编程语言Swift的说明文档,中文版本很快就已经推出了.应该说还么有那个语音的中文文档翻译速度和

15个快速学习苹果Swift编程语言的入门教程

要说今年最火的编程语言是什么.那就非Swift莫属了.当然最主要还是市场炒的比较热,加上官方Swift教程<The Swift Programming Language>在北航的大三学生发起在github上进行协同翻译获得了很高的人气,短短几天时间内<Swift中文版>第一版就发布.这真是不火不行了. Swift是苹果公司在WWDC2014上发布的全新开发语言.从演示视频及随后在appstore上线的标准文档看来,语法内容混合了OC,JS,Python,语法简单,使用方便,并可与O