iOS Review

iOS Weak Strong Label字体适配

2018-04-23  本文已影响5人  烟雨痕

一、Strong、 Weak

1.__strong引用确保了对象在其作用域内不会被销毁。对象只会在方法完成之后被回收。

- (IBAction)strongAction:(id)sender {
    NSLog(@"enter: %s", __PRETTY_FUNCTION__);
    Photo *photo =  [[Photo alloc] init];
    NSLog(@"Strong Photo: %@", photo);
    
    photo.title = @"Strong Photo";
    
    NSMutableString *ms = [[NSMutableString alloc] init];
    [ms appendString:photo == nil ? @"Photo is nil" : @"Photo not is nil"];
    [ms appendString:@"\n"];
    if (photo != nil) {
        [ms appendString:photo.title];
    }
    
    self.titleLabel.text = ms;
    NSLog(@"exit %s", __PRETTY_FUNCTION__);
    
}
strong.png

2.__weak引用对引用计数没有作用。因为内存被分配在方法内且一个__weak引用指向这段内存,引用计数为0,对象被立即回收,甚至在其被用于紧邻的下一个语句前。


weak.png

3.Strong-->Weak,虽然__weak引用不会增加引用计数,但之前创建的__strong引用确保了对象不会再方法结束前释放。


Strong-->Weak.png 局部变量.png 属性.png

二、Label字体适配,字体下面被截

出自文章 http://mrpeak.cn/blog/uilabel/

UILabel *lab = [[UILabel alloc] init];
    lab.frame = CGRectMake(10, 100, 200, 30);
    lab.text = @"gyjq";
    lab.font = [UIFont systemFontOfSize:30];
    [self.view addSubview:lab];

 //常用 字体根据控件的宽度 自动适应大小
  lab.adjustsFontSizeToFitWidth = YES;

    //第一种
    [lab sizeToFit];
    //第二种
    CGSize suggestSize = [lab sizeThatFits:CGSizeMake(200, 30)];
    CGRect frame = lab.frame;
    frame.size.height = suggestSize.height;
    lab.frame = frame;
    //第三种
    CGSize labelSize = [lab.text boundingRectWithSize:CGSizeMake(200.0, MAXFLOAT) options:NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:30]} context:nil].size;
    CGRect labframe = lab.frame;
    labframe.size.height = labelSize.height;
    lab.frame = labframe;
    //第四种
    CGSize size = [lab.text sizeWithAttributes:@{NSFontAttributeName : lab.font}];
    CGRect lableframe = lab.frame;
    lableframe.size.height = size.height;
    lab.frame = lableframe;
 
上一篇下一篇

猜你喜欢

热点阅读