把图片做成圆形图标
self.headIconImageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 40, 40)] ;
self.headIconImageView.layer.cornerRadius = 20 ; // 设置半径
self.headIconImageView.layer.masksToBounds = YES ; // 边界是否允许截取
根据UILabel里的内容自适应高度
// 内容的自适应高度方法
* @param CGSize 规定文本显示的最大范围
@param options 按照何种设置来计算范围
@param attributes 文本内容的一些属性,例如字体大小,字体类型等 (字体不一样,高度也不一样)
@parma context 上下文 可以规定一些其他的设置 但是一般都是nil
*/
// 枚举值中的 " | " 意思是要满足所有的枚举值设置.
NSString *contentString = [dic objectForKey:@"content"] ; //从字典中提取字符串
CGRect rect = [contentString boundingRectWithSize:CGSizeMake(tableView.bounds.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName :[UIFont systemFontOfSize:15]} context:nil] ;
根据汉字字符串获取该字符串的拼音然后取得首字母
分享资源 汉字转换为 拼音 获取首字母
//获取拼音首字母(传入汉字字符串, 返回大写拼音首字母)
/*
- (NSString *)firstCharactor:(NSString *)aString
{
//转成了可变字符串
NSMutableString *str = [NSMutableString stringWithString:aString];
//先转换为带声调的拼音
CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);
//再转换为不带声调的拼音
CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);
//转化为大写拼音
NSString *pinYin = [str capitalizedString];
//获取并返回首字母
return [pinYin substringToIndex:1];
}
*/
NSString *string = @"简书" ;
if ([string length])
{
NSMutableString *mutableString = [NSMutableString stringWithString:string] ;
/**
* 由于此方法是在coreFoundation框架下,咱们平时所使用的类型都是Foundation框架下的,所以需要转换类型.
*
* @param string#> string 所需要转换的原字符#>
* @param range#> range 所需要转换字符的范围.如果为0或者是NULL意思是所有字符都转换#>
* @param transform#> transform 转换方式#>
* @param reverse#> reverse 如果为YES,返回原字符串;如果为NO,返回转换之后的字符串#>
*
* @return return value description
*/
// 将所有非英文的字符转换为拉丁字母,并且带声调和重音标识
// __bridge :只改变当前对象的类型,但是不改变对象内存的管理权限
CFStringTransform((__bridge CFMutableStringRef)mutableString , 0,kCFStringTransformToLatin , NO) ;
// 去掉声调
CFStringTransform((__bridge CFMutableStringRef)mutableString , 0,kCFStringTransformStripDiacritics , NO) ;
// 每个单词的首字母大写 后再截取字符串
NSString *str = [[mutableString capitalizedString] substringToIndex:1];
}
图片的渲染方式
[button setImage:[[UIImage imageNamed:@"1.jpg" ] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal] ;
多个线程同时调用方法的时候,保证只有一个线程在使用该方法.–完整的单例
static Singleton *singleton = nil ;
+ (Singleton *)defaultSingleton
{
// 方法锁,作用为:当多个线程同时调用方法的时候,保证只有一个线程在使用该方法.例如:A和B同时调用defaultSingleton方法,如果A正在使用该方法,那么B就不能调用,直到A使用完成,B才会执行该方法.这个也保证单例对象的唯一性,避免初始化方法被同时多次执行.
@synchronized(self)
{
if (singleton == nil)
{
singleton = [[Singleton alloc] init] ;
}
}
return singleton ;
}
隐藏状态栏 修改状态栏风格
-(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent; // 暗背景色时使用
}
- (BOOL)prefersStatusBarHidden
{
return YES; // 是否隐藏状态栏
}
UITableViewCell可移动,需要打开的代理方法以及移动过程中调用的代理方法
// tableView可移动 移动完成之后会调用此代理方法
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
}
// 移动过程中调用的代理方法 -- 示例为不能跨区移动
/**
* <#Description#>
*
* @param tableView
* @param sourceIndexPath 所要移动单元格的原始位置
* @param proposedDestinationIndexPath 将要移动到的位置
*
* @return return value description
*/
- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath
{
// 移动位置在同一分区
if (sourceIndexPath.section == proposedDestinationIndexPath.section)
{
// 这时允许单元格移动
return proposedDestinationIndexPath ;
}
// 不在同一分区 不让单元格移动,返回原始的indexPath
else
{
return sourceIndexPath ;
}
}
UIImage与字符串互转
//图片转字符串
-(NSString *)UIImageToBase64Str:(UIImage *) image
{
NSData *data = UIImageJPEGRepresentation(image, 1.0f);
NSString *encodedImageStr = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
return encodedImageStr;
}
//字符串转图片
-(UIImage *)Base64StrToUIImage:(NSString *)_encodedImageStr
{
NSData *_decodedImageData = [[NSData alloc] initWithBase64Encoding:_encodedImageStr];
UIImage *_decodedImage = [UIImage imageWithData:_decodedImageData];
return _decodedImage;
}
当有多个导航控制器时,一次设置多个导航控制器
UINavigationBar *navBar = [UINavigationBar appearance] ;
// 所有导航条颜色都会改变 -- 一键设置
//navBar.barTintColor = [UIColor yellowColor] ;
[navBar setBackgroundImage:[UIImage imageNamed:@"bg_nav.png"] forBarMetrics:UIBarMetricsDefault] ;
通过2D仿射函数实现小的动画效果(变大缩小) –可用于自定义pageControl中.
[UIView animateWithDuration:0.3 animations:^{
imageView.transform = CGAffineTransformMakeScale(2, 2);
} completion:^(BOOL finished) {
imageView.transform = CGAffineTransformMakeScale(1.0, 1.0);
}];