自己搜集的iOS开发经验总结

1、设置UILabel行间距

NSMutableAttributedString* attrString = [[NSMutableAttributedString  alloc] initWithString:label.text];

NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];

[style setLineSpacing:20];

[attrString addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, label.text.length)];

label.attributedText = attrString;

2、UILabel显示不同颜色字体

NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:label.text];

[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,5)];

[string addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(5,6)];

[string addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(11,5)];

label.attributedText = string;

,247);mj�8dxݞ

3、计算UILabel上某段文字的frame

@implementation UILabel (TextRect)

- (CGRect)boundingRectForCharacterRange:(NSRange)range

{

NSTextStorage *textStorage = [[NSTextStorage alloc] initWithAttributedString:[self attributedText]];

NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];

[textStorage addLayoutManager:layoutManager];

NSTextContainer *textContainer = [[NSTextContainer alloc] initWithSize:[self bounds].size];

textContainer.lineFragmentPadding = 0;

[layoutManager addTextContainer:textContainer];

NSRange glyphRange;

[layoutManager characterRangeForGlyphRange:range actualGlyphRange:&glyphRange];

return [layoutManager boundingRectForGlyphRange:glyphRange inTextContainer:textContainer];

}


4、比较两个NSDate相差多少小时

NSDate* date1 = someDate;

NSDate* date2 = someOtherDate;

NSTimeInterval distanceBetweenDates = [date1 timeIntervalSinceDate:date2];

double secondsInAnHour = 3600;

// 除以3600是把秒化成小时,除以60得到结果为相差的分钟数

NSInteger hoursBetweenDates = distanceBetweenDates / secondsInAnHour;


5、播放一张张连续的图片

// 加入现在有三张图片分别为tu1、tu2、tu3

// 方法一

imageView.animationImages = @[[UIImage imageNamed:@"tu1"], [UIImage imageNamed:@"tu2"], [UIImage imageNamed:@"tu3"]];

imageView.animationDuration = 1.0;

// 方法二

imageView.image = [UIImage animatedImageNamed:@"tu" duration:1.0];

// 方法二解释下,这个方法会加载tu为前缀的,后边0-1024,也就是tu0、tu1一直到tu1024


6、防止离屏渲染为image添加圆角

// image分类

- (UIImage *)circleImage

{

// NO代表透明

UIGraphicsBeginImageContextWithOptions(self.size, NO, 1);

// 获得上下文

CGContextRef ctx = UIGraphicsGetCurrentContext();

// 添加一个圆

CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);

// 方形变圆形

CGContextAddEllipseInRect(ctx, rect);

// 裁剪

CGContextClip(ctx);

// 将图片画上去

[self drawInRect:rect];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return image;

}

7、查看系统所有字体

// 打印字体

for (id familyName in [UIFont familyNames]) {

NSLog(@"%@", familyName);

for (id fontName in [UIFont fontNamesForFamilyName:familyName]) NSLog(@"  %@", fontName);

}

NSInteger i = arc4random();

8、获取随机数

NSInteger i = arc4random();

9、AVPlayer视频播放完成的通知监听

[[NSNotificationCenter defaultCenter]

addObserver:self

selector:@selector(videoPlayEnd)

name:AVPlayerItemDidPlayToEndTimeNotification

object:nil];

15、判断一个字符串是否为数字

NSCharacterSet *notDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];

if ([str rangeOfCharacterFromSet:notDigits].location == NSNotFound)

{

// 是数字

} else

{

// 不是数字

}

以上内容并非原创,在各个平台搜集整理的,初来乍到,多多关照

你可能感兴趣的:(自己搜集的iOS开发经验总结)