在开发过程中,偶尔会碰到文字竖向排列的需求,在这里向大家介绍一种直观简便的方法,3行代码搞定。1
2
3UILabel *label = [UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 120);
label.text = @"本\n地\n音\n乐";
label.lineBreakMode = NSLineBreakByWordWrapping;
Tips2-UIButton实现左文字右图片
在iOS开发中经常会遇到左边文字右边图片的控件设计需求,咋一看,好像可以用UIButton来做。但是,等等,UIButton是左图片右文字呀!
这个时候,你去找设计妹子,要求改成系统样式。妹子们通常会说:“这样更好看呀!”
然后,你只有回去乖乖地去做:用一个UIView当做background,在background的右边放一个UIImageView,左边放一个UILabel,再用约束将它们调成想要的样子。这样做也不费事,但是有没有更简便的方法呢?
有!
For Example:1
2
3
4
5UIButton *btn = [UIButton alloc] init];
[btn setTitle:@"Next" forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:@"arrow"] forState:UIControlStateNormal];
[btn setTitleEdgeInsets:UIEdgeInsetsMake(0, -btn.imageView.size.width, 0, btn.imageView.size.width)];
[btn setImageEdgeInsets:UIEdgeInsetsMake(0, btn.titleLabel.bounds.size.width, 0, -btn.titleLabel.bounds.size.width)];
Tips1- Swift中如何优雅的设置属性
@IBOutlet 的 didSet方法
在iOS开发过程中,即使你在IB或者SB中已经对View的属性进行了设置,但通常不可避免地会用代码进行重新设置。在传统的Objective-C写法中,通常会将这段重置属性代码写在viewDidLoad方法内,Swift虽然也可以写在该方法内,但我认为一个更合适的地方是在该@IBOutlet的didSet方法中进行。
@IBOutlet修饰的也是一个属性,这个关键字的作用仅仅只是将属性暴露给IB,不会影响属性观察方法(willSet, didSet等)的调用。
For Example:
1 | @IBOutlet var nameLabel: UILabel! { |
这样写可以让view的相关设置代码相对集中在一起,方便查看和修改,同时也让viewDidLoad方法内部更加干净。