重写UILabler的sizeThatFits方法,需要触发两次才会有效果

#import "ViewController.h"
@interface SpecialLabel:UILabel
@end

@implementation SpecialLabel

- (CGSize)sizeThatFits:(CGSize)size {

    CGSize s = [super sizeThatFits:size];

    return CGSizeMake(s.width +50, s.height +50);
}
@end

@interface ViewController ()

@property (weak, nonatomic) IBOutlet SpecialLabel *label;

@end

@implementation ViewController

- (IBAction)changeText {

    self.label.text = @"fsdgdssssssssssss ";
#if 1
    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
        [self.label sizeToFit];
    }];
#else
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.001 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
         [self.label sizeToFit];
    });
#endif

}
直接这样写不知道为什么不行
self.label.text = @"fsdgdssssssssssss ";
[self.label sizeToFit];

非得搞个

[NSOperationQueue mainQueue]或者延时,记录一下
 
时间: 2024-10-17 15:19:58

重写UILabler的sizeThatFits方法,需要触发两次才会有效果的相关文章

两个对象整体内容的比较-重写对象的equals方法

比较两个对象整体的内容,要重写对象的equals方法 重写Person的equals方法 @Override public boolean equals(Object obj) { if(this == obj){//引用的地址完全一样 return true; } if(obj == null){//obj是空的 return false; } if(getClass()!=obj.getClass()){//两者类型不一样 return false; } Person p = (Person

重写hashCode与equals方法的作用

为了阐明其作用,我们先来假设有如下一个Person类. class Person { public Person(String name, int age) { this.name = name; this.age = age; } private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; }

解决label点击事件触发两次问题

问题描述: 通常,为了用户体验,我们点击单选框或者复选框后面文字,即可选中当前项.代码如下: <label> <input type="radio" name="sex" />男 </label> <label> <input type="radio" name="sex" />女 </label> 但是,此时,如果label标签有点击事件,则会触发两次.

使用jQuery中trigger()方法自动触发事件

一.常用事件 在页面加载完成时  自动触发input的点击事件,在移动端可以实现自动弹出输入法,获得焦点 $("input").trigger("click").focus(); 还有一种简写方式: $("input").click(); 还有其它事件就不一一列出了. 二.自定义事件 $("#btn").on("myClick",function(){ alert("自定义事件"); }

点击label时click事件被触发两次的坑

原文:点击label时click事件被触发两次的坑 今天帮群里的朋友看一段代码的时候偶然间遇到一个label的坑,点击label的时候,监听的click事件被执行两次: 具体代码如下: 1 <div id="test"> 2 <input type="checkbox" name="abc" id="abc"/> 3 <label for="abc">3423432432

解决jQuery中dbclick事件触发两次click事件

首先感谢这位小哥!http://qubernet.blog.163.com/blog/static/1779472842011101505853216/ 太长姿势了. 在jQuery事件绑定中,dbclick可以触发两次click事件.例如一个DOM元素div,既绑定了 click 事件,又绑定了 dblclick 事件,这两个事件分别要做独立的事情.事件处理上没有冲突,都可以各自完成各自的操作.双击的时候虽然是执行了 dblclick 事件,但是在这之前,也执行了click 事件,那么,如何来

jquery触发两次onchange事件

在项目中需要给select绑定改变事件,来触发动作,但是发现改变一次select,onchange方法执行两遍 //公告类别的变更时间联动公告模板$("#test").change(function () { alert(1);}) 后来给select 标签添加一个onchange属性也会触发两次,这个onchange时间的机制是,在获取焦点之后,储存一个select里面的值,当发现这个值改变的时候,触发onchange事件 目前仅在IE8下发现此类问题,我仅测试了IE8/Chrome

IOS viewDidLoad方法被执行两次(viewDidLoad和loadView方法详解)

为了搞清楚viewDidLoad.loadView等方法的用途和调用顺序,写了一个小demo,不料viewDidLoad方法被执行了两次,模拟器也一直是黑屏.查看了这两个方法的官方解释后找到了错误原因和解决方法. 首先来看UIViewController.h文件中对viewDidLoad方法的解释: - (void)viewDidLoad; // Called after the view has been loaded. For view controllers created in code

java集合框架(hashSet自定义元素是否相同,重写hashCode和equals方法)

/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不一致,元素不可以重复 * (通过哈希值来判断是否是同一个对象) * ----HashSet:底层数据结构是哈希表, * 保证数据唯一性的方法是调用存入元素的hashCode()方法 * 和equals(Object obj)方法 * HashCode值相同,才会调用equals方法 * * */ 1 import java.util.HashSet; 2 import java.util.Iterator; 3 publ