iOS  常用方法

1.在自定义View中跳转到其他控制器

[[self viewController].navigationController pushViewController:allPatientVC animated:YES];

- (UIViewController *)viewController {
for (UIView* next = [self superview]; next; next = next.superview) {
    UIResponder *nextResponder = [next nextResponder];
    if ([nextResponder isKindOfClass:[UIViewController class]]) {
        return (UIViewController *)nextResponder;
    }
}
return nil;
}

2.设置UITableView分割线位置

//1.调整(iOS7以上)表格分隔线边距
if ([self.tableView   respondsToSelector:@selector(setSeparatorInset:)]) {
  self.tableView.separatorInset = UIEdgeInsetsZero;
}
//2.调整(iOS8以上)view边距(或者在cell中设置preservesSuperviewLayoutMargins,二者等效)
if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
  self.tableView.layoutMargins = UIEdgeInsetsZero;
}

3.修改UITextField的占位符的字体颜色和大小

方法1:利用富文本

@property (weak, nonatomic) IBOutlet UITextField *textField;

NSDictionary *dic = @{NSForegroundColorAttributeName:[UIColor magentaColor], NSFontAttributeName:[UIFont systemFontOfSize:15]};

self.textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"欢迎回来" attributes:dic];

self.textField.tintColor = [UIColor cyanColor];



方法2:KVC

self.textField.placeholder = @"欢迎回来!";

[self.textField setValue:[UIColor magentaColor] forKeyPath:@"_placeholderLabel.textColor"]

[self.textField setValue:[UIFont systemFontOfSize:15] forKeyPath:@"_placeholderLabel.font"];

self.textField.tintColor = [UIColor greenColor];

4.修改导航栏item的左右间距

UIBarButtonItem *rightSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];

rightSpace.width = -7;

self.navigationItem.rightBarButtonItems = @[rightSpace,rightItem];

5.UIButton 左边图片,右边文字

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(100, 100, 100, 50);
button.backgroundColor = [UIColor clearColor];
//设置button正常状态下的图片
[button setImage:[UIImage imageNamed:@"_star_normal.png"]    forState:UIControlStateNormal];
//设置button高亮状态下的图片
[button setImage:[UIImage imageNamed:@"_star_highlighted.png"] forState:UIControlStateHighlighted];
//设置button正常状态下的背景图
[button setBackgroundImage:[UIImage imageNamed:@"_normal.png"] forState:UIControlStateNormal];
//设置button高亮状态下的背景图
[button setBackgroundImage:[UIImage imageNamed:@"_highlighted.png"] forState:UIControlStateHighlighted];
//button图片的偏移量,距上左下右分别(10, 10, 10, 60)像素点
button.imageEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 60);
[button setTitle:@"南瓜瓜" forState:UIControlStateNormal];
//button标题的偏移量,这个偏移量是相对于图片的
button.titleEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0);
//设置button正常状态下的标题颜色
[button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
//设置button高亮状态下的标题颜色
[button setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted];
button.titleLabel.font = [UIFont systemFontOfSize:14];
[self.view addSubview:button];

6.检查字符串是否为url

- (NSString *)getCompleteWebsite:(NSString *)urlStr{  
NSString *returnUrlStr = nil;  
NSString *scheme = nil;  
  
assert(urlStr != nil);  
  
urlStr = [urlStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];  
if ( (urlStr != nil) && (urlStr.length != 0) ) {  
    NSRange  urlRange = [urlStr rangeOfString:@"://"];  
    if (urlRange.location == NSNotFound) {  
        returnUrlStr = [NSString stringWithFormat:@"http://%@", urlStr];  
    } else {  
        scheme = [urlStr substringWithRange:NSMakeRange(0, urlRange.location)];  
        assert(scheme != nil);  
          
        if ( ([scheme compare:@"http"  options:NSCaseInsensitiveSearch] == NSOrderedSame)  
            || ([scheme compare:@"https" options:NSCaseInsensitiveSearch] == NSOrderedSame) ) {  
            returnUrlStr = urlStr;  
        } else {  
            //不支持的URL方案  
        }  
    }  
}  
return returnUrlStr;  
}

7.秒转换为时分秒

-(NSString *)getMMSSFromSS:(NSString *)totalTime{

 NSInteger seconds = [totalTime integerValue];
//format of hour
NSString *str_hour = [NSString stringWithFormat:@"%02ld",seconds/3600];
//format of minute
NSString *str_minute = [NSString stringWithFormat:@"%02ld",(seconds%3600)/60];
//format of second
NSString *str_second = [NSString stringWithFormat:@"%02ld",seconds%60];
//format of time
NSString *format_time = [NSString stringWithFormat:@"%@:%@:%@",str_hour,str_minute,str_second];
return format_time;
}`

8.禁用系统左滑返回

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// 禁用返回手势
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
}

- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
// 开启返回手势
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
}  

9.判断UIImage图片是否是同一张图片(在写UIImagePickerController中要判断之前的image和当下选择的uiimage是不是一个image)

UIImage* image= info[UIImagePickerControllerOriginalImage];
UIImageView* imageView=[[UIImageView alloc]initWithFrame:CGRectMake(self.imageViews.count*80.0, 0, 80, 80)];
   imageView.image=image;
for (UIImageView* subimage in self.imageViews) {
    if ([UIImagePNGRepresentation(subimage.image) isEqual:UIImagePNGRepresentation(image)]) {
        UIAlertView* alert=[[UIAlertView alloc]initWithTitle:@" 此图片已经选择过,选择其他图片" message:@" 此图片已经选择过,选择其他图片"  delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"ok ", nil];
        [alert show];
        return;
    }
}

10.真色彩显示

真彩色的显示会根据光感应器来自动的调节达到特定环境下显示与性能的平衡效果,如果需要这个功能的话,可以在info.plist里配置(在Source Code模式下):

  <key>UIWhitePointAdaptivityStyle</key>
  它有五种取值,分别是:

  <string>UIWhitePointAdaptivityStyleStandard</string> // 标准模式
  <string>UIWhitePointAdaptivityStyleReading</string> // 阅读模式
  <string>UIWhitePointAdaptivityStylePhoto</string> // 图片模式
  <string>UIWhitePointAdaptivityStyleVideo</string> // 视频模式
  <string>UIWhitePointAdaptivityStyleStandard</string> // 游戏模式

也就是说如果你的项目是阅读类的,就选择UIWhitePointAdaptivityStyleReading这个模式,五种模式的显示效果是从上往下递减,也就是说如果你的项目是图片处理类的,你选择的是阅读模式,给选择太好的效果会影响性能.

11.UIRefreshControl

在iOS 10 中, UIRefreshControl可以直接在UICollectionView和UITableView中使用,并且脱离了UITableViewController.现在RefreshControl是UIScrollView的一个属性.
使用方法:

  UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
  [refreshControl addTarget:self action:@selector(loadData)      forControlEvents:UIControlEventValueChanged];
  collectionView.refreshControl = refreshControl;

12 UIImage图片转成Base64字符串:

UIImage *originImage = [UIImage imageNamed:@"Cover.png"];

NSData *data = UIImageJPEGRepresentation(originImage, 1.0f);

NSString *encodedImageStr = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
NSLog(@"encodedImageStr==%@",encodedImageStr);

//Base64字符串转UIImage图片:

NSData *decodedImageData = [[NSData alloc]initWithBase64EncodedString:encodedImageStr options:NSDataBase64DecodingIgnoreUnknownCharacters];

UIImage *decodedImage = [UIImage imageWithData:decodedImageData];

UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(60, 100, 200, 400)];

[imgView setImage:decodedImage];

[self.view addSubview:imgView];

NSLog(@"decodedImage==%@",decodedImageData);

13.iOS如何快速得到数组所有元素累加结果,平均值和最大最小值

NSArray *values = @[@72, @78, @75, @70, @72, @73, @77, @78, @75, @70, @72, @73, @87, @78, @75, @70, @72];

NSNumber *avg = [values valueForKeyPath:@"@avg.self"];

NSNumber *sum = [values valueForKeyPath:@"@sum.self"];

NSNumber *max = [values valueForKeyPath:@"@max.self"];

NSNumber *min = [values valueForKeyPath:@"@min.self"];

14.隐藏导航栏

    @interface WLHomePageController () <UINavigationControllerDelegate>

    @end

    @implementation WLHomePageController 

    #pragma mark - lifeCycle
    - (void)viewDidLoad {
    [super viewDidLoad];
    // 设置导航控制器的代理为self
    self.navigationController.delegate = self;
  }

  #pragma mark - UINavigationControllerDelegate
// 将要显示控制器
- (void)navigationController:(UINavigationController *)navigationController   willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    // 判断要显示的控制器是否是自己
    BOOL isShowHomePage = [viewController isKindOfClass:[self class]];

    [self.navigationController setNavigationBarHidden:isShowHomePage animated:YES];
}

- (void)dealloc {
    self.navigationController.delegate = nil;
}

15.防止scrollView手势覆盖侧滑手势

[scrollView.panGestureRecognizerrequireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer];

16.字符串中是否含有中文

+ (BOOL)checkIsChinese:(NSString *)string
{
for (int i=0; i<string.length; i++)
{
    unichar ch = [string characterAtIndex:i];
    if (0x4E00 <= ch  && ch <= 0x9FA5)
    {
        return YES;
    }
}
return NO;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容