-(void)layoutSubviews
{
[super layoutSubviews];
//移除系統(tǒng)自帶控件
for (UIView* child in self.subviews) {
// 取出tabbar中的所有UITabBarButton 設(shè)置其frame
if([child isKindOfClass:NSClassFromString(@"UITabBarButton")]
|| [child isKindOfClass:NSClassFromString(@"_UITabBarBackgroundView")]
|| [child isKindOfClass:NSClassFromString(@"UIImageView")]
){
[child removeFromSuperview];
}
}
}
- (UIImage *)imageFromColor:(UIColor *)color{
CGRect rect = CGRectMake(0, 0, 100, 100);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
//snapshotImage 這個方法效率比較低煮盼,
- (UIImage *)snapshotImage {
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *snap = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return snap;
}
//iOS 7上UIView上提供了drawViewHierarchyInRect:afterScreenUpdates:來截圖奸攻,速度比renderInContext:快15倍话浇。
- (UIImage *)snapshotImageAfterScreenUpdates:(BOOL)afterUpdates {
if ([self respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)]) {
return [self snapshotImage];
}
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:afterUpdates];
UIImage *snap = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return snap;
}
//保存截圖到相冊
- (void)saveImageToPhotos:(UIImage *)image{
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
}
//狀態(tài)回調(diào)
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
if (!error) {
NSLog(@"\n\n保存成功\n\n");
} else {
NSLog(@"\n\n保存失敗\n\n");
}
}
//圖片轉(zhuǎn)字符串
-(NSString *)UIImageToBase64Str:(UIImage *) image
{
NSData *data = UIImageJPEGRepresentation(image, 1.0f);
NSString *encodedImageStr = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
return encodedImageStr;
}
//
//字符串轉(zhuǎn)圖片
-(UIImage *)Base64StrToUIImage:(NSString *)_encodedImageStr
{
NSData *_decodedImageData = [[NSData alloc] initWithBase64Encoding:_encodedImageStr];
UIImage *_decodedImage = [UIImage imageWithData:_decodedImageData];
return _decodedImage;
}
//第一種方法:先將漢字轉(zhuǎn)換為 拼音 再獲取首字母
//獲取拼音首字母(傳入漢字字符串, 返回大寫拼音首字母)
/*
- (NSString *)firstCharactor:(NSString *)aString
{
//轉(zhuǎn)成了可變字符串
NSMutableString *str = [NSMutableString stringWithString:aString];
//先轉(zhuǎn)換為帶聲調(diào)的拼音
CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);
//再轉(zhuǎn)換為不帶聲調(diào)的拼音
CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);
//轉(zhuǎn)化為大寫拼音
NSString *pinYin = [str capitalizedString];
//獲取并返回首字母
return [pinYin substringToIndex:1];
}
//
//第二種方法:
NSString *string = @"簡書" ;
if ([string length])
{
NSMutableString *mutableString = [NSMutableString stringWithString:string] ;
/**
* 由于此方法是在coreFoundation框架下,
* 而我們平時所使用的類型都是Foundation框架下的,所以需要轉(zhuǎn)換類型.
*
* @param string#> string 所需要轉(zhuǎn)換的原字符#>
* @param range#> range 所需要轉(zhuǎn)換字符的范圍.
* 如果為0或者是NULL意思是所有字符都轉(zhuǎn)換#>
* @param transform#> transform 轉(zhuǎn)換方式#>
* @param reverse#> reverse 如果為YES,返回原字符串;
* 如果為NO,返回轉(zhuǎn)換之后的字符串#>
*
* @return return value description
*/
// 將所有非英文的字符轉(zhuǎn)換為拉丁字母,并且?guī)曊{(diào)和重音標(biāo)識
// __bridge :只改變當(dāng)前對象的類型,但是不改變對象內(nèi)存的管理權(quán)限
CFStringTransform((__bridge CFMutableStringRef)mutableString , 0,kCFStringTransformToLatin , NO) ;
// 去掉聲調(diào)
CFStringTransform((__bridge CFMutableStringRef)mutableString , 0,kCFStringTransformStripDiacritics , NO) ;
// 每個單詞的首字母大寫 后再截取字符串
NSString *str = [[mutableString capitalizedString] substringToIndex:1];
}
-(NSString *)getLaunchImageName
{
CGSize viewSize = self.view.bounds.size;
NSString *viewOrientation = @"Portrait"; //橫屏請設(shè)置成 @"Landscape"
NSString *launchImage = nil;
NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];
for (NSDictionary* dict in imagesDict)
{
CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]);
if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]])
{
launchImage = dict[@"UILaunchImageName"];
}
}
return launchImage;
}