后續(xù)會逐步添加...
1. 蘋果提供的UIProgressView高度固定為2绑洛,有時候我們就想它變高些敞贡,比如想它高度變?yōu)?,改變frame或者設(shè)置約束發(fā)現(xiàn)無效心褐,可以使用如下方式:
CGAffineTransform transform = CGAffineTransformMakeScale(1.0f, 2.5f);
progressView.transform = transform;
2. 子類視圖超出父類視圖的部分不想要舔涎,有兩種辦法:
1. 設(shè)置子視圖view的clipsToBounds屬性為YES。
2. 設(shè)置子視圖view.layer的masksToBounds屬性為YES逗爹。
3. iOS 上傳圖片限制大小可以使用分類UIImage+Resize
- (NSData *)resizeImageToTargetSize:(CGSize)targetSize maxDataSize:(NSInteger)maxDataSize {
// 設(shè)置缺省標識尺寸
if (CGSizeEqualToSize(targetSize, CGSizeZero)) {
targetSize = CGSizeMake(1024, 1024);
}
// 判斷尺寸亡嫌,進行尺寸處理
CGSize newSize = CGSizeMake(self.size.width, self.size.height);
CGFloat tempHeight = newSize.height / targetSize.height;
CGFloat tempWidth = newSize.width / targetSize.width;
if (tempWidth > 1.0 && tempWidth > tempHeight) {
newSize = CGSizeMake(self.size.width / tempWidth, self.size.height / tempWidth);
}
else if (tempHeight > 1.0 && tempWidth < tempHeight){
newSize = CGSizeMake(self.size.width / tempHeight, self.size.height / tempHeight);
}
// 確認要處理的圖片
UIImage *newImage = nil;
if (tempWidth > 1.0 || tempHeight > 1.0) { // 滿足壓縮條件
UIGraphicsBeginImageContext(newSize);
[self drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
} else { // 不需要壓縮(在正常范圍內(nèi),保證清晰)
newImage = self;
}
// 獲取圖片大小
NSData *imageData = UIImageJPEGRepresentation(newImage,1.0);
CGFloat sizeOriginKB = imageData.length / 1024.0;
// 圖片大小處理
CGFloat resizeRate = 0.9;
while (sizeOriginKB > maxDataSize && resizeRate > 0.1) {
imageData = UIImageJPEGRepresentation(newImage,resizeRate);
sizeOriginKB = imageData.length / 1024.0;
resizeRate -= 0.1;
}
return imageData;
}
4. 改變UITextField的placeholder的字體和顏色
[textField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"]
[textField setValue:[UIFont systemFontOfSize:14.0f] forKeyPath:@"_placeholderLabel.font"]
如果以上設(shè)置方法Xcode發(fā)生崩潰掘而,可以使用如下方法:
// 創(chuàng)建placeholder富文本屬性
NSMutableAttributedString *placeholderMAttributesString = [[NSMutableAttributedString alloc] initWithString:@"請輸入您的姓名"];
// 設(shè)置placeholder字體大小
[placeholderMAttributesString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:15] range:NSMakeRange(0, placeholderMAttributesString.length)];
// 設(shè)置placeholder顏色
[placeholderMAttributesString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, placeholderMAttributesString.length)];
// 設(shè)置placeholder
textField.attributedPlaceholder = placeholderMAttributesString;
5. 【iOS8及以下】與【iOS9及以上】系統(tǒng)實現(xiàn)系統(tǒng)UITableViewCell側(cè)滑坑點
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewCellEditingStyleDelete;
}
- (nullable NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewRowAction *action = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"設(shè)置" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
}];
action.backgroundColor = [UIColor blueColor];
return @[action];
}
以上代碼即可實現(xiàn)iOS9及以上系統(tǒng)UITableViewCell側(cè)滑挟冠,但是運行在iOS8上會發(fā)現(xiàn)側(cè)滑不可用。
解決辦法:
// 此方法不能刪袍睡,否則iOS8側(cè)滑沒反應
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath: (NSIndexPath *)indexPath
{
}
6. 獲取啟動圖片
+ (UIImage *)launchImage {
UIImage *image = nil;
NSArray *launchImages = [NSBundle mainBundle].infoDictionary[@"UILaunchImages"];
for (NSDictionary *dict in launchImages) {
// 1. 將字符串轉(zhuǎn)換成尺寸
CGSize size = CGSizeFromString(dict[@"UILaunchImageSize"]);
// 2. 與當前屏幕進行比較
if (CGSizeEqualToSize(size, [UIScreen mainScreen].bounds.size)) {
NSString *filename = dict[@"UILaunchImageName"];
image = [UIImage imageNamed:filename];
break;
}
}
return image;
}
7. 控制狀態(tài)欄顏色
狀態(tài)欄變白:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
狀態(tài)欄變黑:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
8. 獲取自己的App在蘋果商店最新的版本
https://itunes.apple.com/lookup?id=xxx
xxx 改為蘋果為自己的App分配的applied
獲取如下:
NSArray *array = responseObject[@"results"];
NSDictionary *dict = [array lastObject];
NSLog(@"當前版本為:%@", dict[@"version"]);
9. 設(shè)置某些文件以非ARC編譯
-fno-objc-arc
10. 查看.a靜態(tài)庫支持的CPU架構(gòu)
lipo -info xxx.a
11. 強制清除Xcode警告
#pragma clang diagnostic push
#pragma clang diagnostic ignored "xxx"
// 這里放有xxx警告的代碼
#pragma clang diagnostic pop
注:xxx是一般在警告詳情里有知染,通過[]包裹,聲明未使用變量就會出現(xiàn)[-Wunused-variable] 中括號內(nèi)的內(nèi)容即為xxx的值
12. 設(shè)置導航按鈕左右移動
// 導航右按鈕
UIBarButtonItem *searchButtonItem = [UIBarButtonItem createBarButtonItemWithTitle:@"搜索" titleColor:nil fontSize:0 target:self action:@selector(search)];
// 位移按鈕
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
// rightBarButtonItem的場合width為負數(shù)時斑胜,表示檢索btn向右移動width數(shù)值個像素控淡,由于按鈕本身和邊界間距為5pix,所以width設(shè)為-5時止潘,間距正好調(diào)整為0逸寓;width為正數(shù) 時,正好相反覆山,表示往左移動width數(shù)值個像素
// 至于width的正負不清楚的竹伸,可以自行調(diào)試
negativeSpacer.width = -3;
self.navigationItem.rightBarButtonItems = @[negativeSpacer, searchButtonItem];
13. 控制器繼承自UITableViewController,默認創(chuàng)建plain風格簇宽,想改為grouped勋篓,可以如下操作:
- (instancetype)initWithStyle:(UITableViewStyle)style {
return [super initWithStyle:UITableViewStyleGrouped];
}
14. 使用系統(tǒng)方法使用圖片創(chuàng)建UIBarButtomItem,背景色顯示藍色
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@""] style:UIBarButtonItemStyleDone target:self action:@selector(search)];
解決辦法如下:
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"ic_index_nav_black"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] style:UIBarButtonItemStyleDone target:self action:@selector(search)];
15. 去除UITextView四個內(nèi)邊距
self.briefTextView.textContainer.lineFragmentPadding = 0;
self.briefTextView.textContainerInset = UIEdgeInsetsZero;
16. 隱式動畫的控件響應不了點擊事件
UIView做動畫的時候把options設(shè)置UIViewAnimationOptionAllowUserInteraction
下面這些文章魏割,個人感覺比較實用譬嚣!有興趣的可以看看~
多年iOS開發(fā)經(jīng)驗總結(jié)(一)
http://www.reibang.com/p/1ff9e44ccc78
多年iOS開發(fā)經(jīng)驗總結(jié)(二)
http://www.reibang.com/p/9fcd37c0ea05