首页 > 其他分享 >iOS开发之最近小知识总结二

iOS开发之最近小知识总结二

时间:2022-11-28 17:04:22浏览次数:42  
标签:总结 知识 iOS 50 class NSString UIDatePicker UIImage id


有好多都是基础知识,仅供参考,谢谢

1、autolayout 自动布局

autoLayout 需要在​​- (void)viewDidLoad​​​ 方法执行完后生效,所以需要在​​- (void)viewDidAppear:(BOOL)animated​​ 方法中再进行frame的获取,此时才能取到正确的frame。

2、NSArray进行不定参数处理


+ (NSArray *)arrayWithObjectsExceptionNil:(id)firstObj, ...
{
NSMutableArray *tempMArray = [[NSMutableArray alloc] initWithCapacity:5];
id eachObject = nil;
va_list argumentList;

if ( firstObj ) {
[tempMArray addObject:firstObj];
va_start(argumentList, firstObj);

while ( (eachObject = va_arg(argumentList, id))){
if ( nil != eachObject ){
[tempMArray addObject:eachObject];
}
}

va_end(argumentList);
}

return nil;
}


3、no input file 错误
如果在编译的时候找不到文件,需要先在Build Phases中的Compile Sources 将不存在的文件删除,然后再将找不到的文件添加到project中。

4、cg,cf,ca,ui等开头类


你还可以看到其他名字打头的一些类,比如CF、CA、CG、UI等等,比如
CFStringTokenizer 这是个分词的东东
CALayer 这表示Core Animation的层
CGPoint 这表示一个点
UIImage 这表示iPhone里面的图片

CF说的是Core Foundation,CA说的是Core Animation,CG说的是Core Graphics,UI说的是iPhone的User Interface

5、file's owner 含义


file's owner 就是xib对应的类,如view对应的xib文件的file's owner对应的类就是viewcontroller的类。
file’s owner 是view和viewcontroller之间的对应关系的桥梁。(即,一个视图,如何知道自己的界面的操作应该由谁来响应)

6、NSString格式限定符


iOS开发之最近小知识总结二_ios开发


7、延长APP的启动时间



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [NSThread sleepForTimeInterval:3.0f]; return YES; }

8、UIAppearance 使用


使用UIAppearance进行外观的自定义。

[+ appearance]修改整个程序中某个class的外观

[[UINavigationBar appearance] setTintColor:myColor];

[+ appearanceWhenContainedIn:]
当某个class被包含在另外一个class内时,才修改外观。

[[UILabel appearanceWhenContainedIn:[cusSearchBar class], nil] setTextColor:[UIColor redColor]];

9、将NSString转换成UTF8编码的NSString


在使用网络地址时,一般要先将url进行encode成UTF8格式的编码,否则在使用时可能报告网址不存在的错误,这时就需要进行转换
下面就是转换函数:

NSString *urlString= [NSString stringWithFormat:@"http://www.baidu.com"];
NSString *encodedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes( kCFAllocatorDefault, (CFStringRef)urlString, NULL, NULL, kCFStringEncodingUTF8 ));
NSURL *url = [NSURL URLWithString:encodedString];

或者使用下面的方法:

NSString *utf8Str = @"Testing";
NSString *unicodeStr = [NSString stringWithCString:[utf8Str UTF8String] encoding:NSUnicodeStringEncoding];

有时候获取的url中的中文等字符是乱码,网页内容是乱码,需要进行一下转码才能正确识别NSString,可以用下面的方法:

//解决乱码问题()

NSString *transString = [NSString stringWithString:[string stringByReplacingPercentEscapesU

10、NSDateFormatter设定日期格式AM /PM


NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setAMSymbol:@"AM"]; [dateFormatter setPMSymbol:@"PM"]; [dateFormatter setDateFormat:@"dd/MM/yyyy hh:mmaaa"]; NSDate *date = [NSDate date]; NSString *s = [dateFormatter stringFromDate:date];

11、将图片中间部分放大


根据图片上下左右4边的像素进行自动扩充。

UIImage *image = [UIImage imageNamed:@"png-0016"];
UIImage *newImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(50, 50, 50, 50) resizingMode:UIImageResizingModeStretch];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 200, 400)];
imageView.image = newImage;
imageView.contentMode = UIViewContentModeScaleAspectFill;

使用方法​​- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode NS_AVAILABLE_IOS(6_0); // the interior is resized according to the resizingMode​​​进行对图片的拉伸,可以使用UIImageResizingModeTile和UIImageResizingModeStretch两种拉伸方式。
注意:此方法返回一个新的UIImage,需要使用这个新的image。

注:UIEdgeInsets设置的值不要上下或左右交叉,不然会出现中间为空白的情况。

12、UITextField 弹出UIDatePicker



设置UITextField的inputView可以不弹出键盘,而弹出UIDatePicker。

首先需要在View加载结束的时候指定文本的InputView

UIDatePicker *datePicker = [[UIDatePicker alloc] init];  
datePicker.datePickerMode = UIDatePickerModeDate;
[datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];
self.txtDate.inputView = datePicker;

然后需要指定当UIDatePicker变动的时候的事件是什么. 此处就是为了给文本框赋值.

- (IBAction)dateChanged:(id)sender  
{
UIDatePicker *picker = (UIDatePicker *)sender;
self.txtDate.text = [NSString stringWithFormat:@"%@", picker.date];

}

然后当文本框编辑结束时, 需要让UIDatePicker消失.

- (IBAction)doneEditing:(id)sender  
{
[self.txtDate resignFirstResponder];
}

然后把文本框在IB中, 指向定义好的txtDate就行了~

13、UIScrollView中立即响应操作


delaysContentTouches 属性是UIScrollView中立即响应Touch事件。默认是YES,如果想点击后马上有反应,则将该值设置为NO。

14、NSNotificationCenter 注销


当 NSNotificationCenter 注册一个通知后

- (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullableNSString *)aName object:(nullableid)anObject;

在class的dealloc中,一定要使用

- (void)removeObserver:(id)observer name:(nullable NSString *)aName object:(nullable id)anObject;

进行注销。

不能用 ​​- (void)removeObserver:(id)observer;​​进行通知的注销。

注意: 如果不注销,将导致class不会被释放。










标签:总结,知识,iOS,50,class,NSString,UIDatePicker,UIImage,id
From: https://blog.51cto.com/u_15894905/5892257

相关文章

  • iOS开发之字数不一的多标签Demo
    有朋友让帮他写一个封装的字数不一的多标签视图,所以今天将代码展示一下,供大家学习代码中封装了两种方法,分别是:1.传递数组,数组中是NSString类型的方法;2.传递数组,数组中是NSDi......
  • iOS开发之自己封装的提示框(警告框)样式BHAlertView
    最近需要使用到提示框(警告框)进行信息的展示和提醒,所以进行了一个类的封装,想用Swift调用此OC文件,但是发现有些困难,所以暂时先把OC代码进行展示,随后再好好研究一下在Swift中的......
  • 元数据规划与设计总结
    1.数仓领域元模型总览  元数据分类按照CWM会更容易认识与理解,但是使用MOF存储与设计会具有灵活的扩展和简化的存储能力。以下是对数据领域整个元数据模型层次进行分......
  • 11月28日内容总结——
    一、多表查询的两种方法方式1:连表操作innerjoin(内连接)select*fromempinnerjoindeponemp.dep_id=dep.id;只连接两张表中公有的数据部分leftjoin(左连接)......
  • 知识图谱可视化
    人物关系知识图谱一、背景将结构化数据通过关系预处理程序处理为图数据库可以查询的数据,示例是将其中一部分(人物关系数据)可视化表示。二、用到的技术技术点:图数据库Neo4j,d3.......
  • Extjs相关知识点梳理
     store是一个为Ext器件提供record对象的存储容器,行为和属性都很象数据表方法:不列举继承来的方法Store(Objectconfig)构造,config定义为{autoLoad:B......
  • Docker容器内部端口映射到外部宿主机端口的方法总结
    好记性不如烂笔头,将docker容器端口映射到宿主机的方法做一个总结,方便后边忘记了能快速的查询。 首先需要注意:宿主机的一个端口只能映射到容器内部的某一个端口上,比如:80......
  • css 样式总结
    #css样式汇总*处理图片5px间距问题1.给父元素设置font-size:02.给img设置display:block3.给img设置vertical-align:bottom4.给......
  • 【正则】174-《JavaScript 正则迷你书》知识点小抄本(下)
    四、正则表达式回溯法原理概念理解起来比较容易。比如用 ​​​/ab{1,3}c/​​ 去匹配下面两个字符串。当匹配 ​​abbbc​​,按顺序匹配,到了第3个 ​​b​​ 后,直接......
  • 物联网知识
    云计算强调的是计算和存储等能力从边缘端或桌面端集中过来,而边缘计算则是将这种计算和存储等能力重新下沉到边缘。家庭数据的隐私性,用户并不总是愿意将数据上传至云端进行......