1.UISearchBar
的使用
UISearchBar *searchBar=[[UISearchBar alloc]initWithFrame:CGRectZero];
searchBar = [[UISearchBar alloc]
initWithFrame:CGRectMake( 0 , 40 , self .view.bounds.size.width, 45 )];
searchBar.delegate = self ;
searchBar.showsCancelButton = NO ;
searchBar.placeholder= @"Enter Name or Categary" ;
searchBar.keyboardType=UIKeyboardTypeNamePhonePad;
[ self .view addSubview:searchBar];
searchBar = [[UISearchBar alloc]
initWithFrame:CGRectMake( 0 , 40 , self .view.bounds.size.width, 45 )];
searchBar.delegate = self ;
searchBar.showsCancelButton = NO ;
searchBar.placeholder= @"Enter Name or Categary" ;
searchBar.keyboardType=UIKeyboardTypeNamePhonePad;
[ self .view addSubview:searchBar];
2.
把
data
数据转换为中文打印在
code
中
success:^(AFHTTPRequestOperation *operation,
id
responseObject){
NSData *data = operation.responseData;
NSString *aString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
NSData *data = operation.responseData;
NSString *aString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
3.
请求之前条件判断
如
:
注册登录
-(
void
)registerClicked
{
{
if
([
self
dataCheck]) {
[self
sendRegisterRequest];
//
发送注册网络请求
}
}
// 注册的网络请求
- ( void )sendRegisterRequest
{}
// 数据检查
- ( BOOL )dataCheck
{
if ([_consignee.text isEqualToString: @"" ]) {
[ShowHud ShowProgressHUDwithMessage: @" 收货人姓名不能为空 " ];
return NO ;
} else if (_phone.text.length != 11 ){
[ShowHud ShowProgressHUDwithMessage: @" 请输入 11 位手机号码! " ];
return NO ;
} else if ([_adress.text isEqualToString: @"" ]){
[ShowHud ShowProgressHUDwithMessage: @" 收获地址不能为空 " ];
return NO ;
} else {
return YES ;
}
}
}
// 注册的网络请求
- ( void )sendRegisterRequest
{}
// 数据检查
- ( BOOL )dataCheck
{
if ([_consignee.text isEqualToString: @"" ]) {
[ShowHud ShowProgressHUDwithMessage: @" 收货人姓名不能为空 " ];
return NO ;
} else if (_phone.text.length != 11 ){
[ShowHud ShowProgressHUDwithMessage: @" 请输入 11 位手机号码! " ];
return NO ;
} else if ([_adress.text isEqualToString: @"" ]){
[ShowHud ShowProgressHUDwithMessage: @" 收获地址不能为空 " ];
return NO ;
} else {
return YES ;
}
}
4.
将信息保存到本地或取出
//
把
username
和
password
保存到本地
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
[user setObject:_username forKey: @"username" ];
[user setObject:_password forKey: @"password" ];
[user synchronize];
// 取出登录名和密码
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
NSString *userName = [user objectForKey: @"username" ];
NSString *passWord = [user objectForKey: @"password" ];
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
[user setObject:_username forKey: @"username" ];
[user setObject:_password forKey: @"password" ];
[user synchronize];
// 取出登录名和密码
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
NSString *userName = [user objectForKey: @"username" ];
NSString *passWord = [user objectForKey: @"password" ];
5.
时间戳转换为时间的方法
NSString *str=
@"1368082020"
;
//
时间戳
//NSTimeInterval time=[str doubleValue]+28800;// 因为时差问题要加 8 小时 == 28800 sec
NSTimeInterval time=[str doubleValue]
NSDate *detaildate=[NSDate dateWithTimeIntervalSince1970:time];
NSLog( @"date:%@" ,[detaildate description]);
// 实例化一个 NSDateFormatter 对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// 设定时间格式 , 这里可以设置成自己需要的格式
[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss" ];
NSString *currentDateStr = [dateFormatter stringFromDate: detaildate];
NSLog( @"curTime=%@" ,currentDateStr);
//NSTimeInterval time=[str doubleValue]+28800;// 因为时差问题要加 8 小时 == 28800 sec
NSTimeInterval time=[str doubleValue]
NSDate *detaildate=[NSDate dateWithTimeIntervalSince1970:time];
NSLog( @"date:%@" ,[detaildate description]);
// 实例化一个 NSDateFormatter 对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// 设定时间格式 , 这里可以设置成自己需要的格式
[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss" ];
NSString *currentDateStr = [dateFormatter stringFromDate: detaildate];
NSLog( @"curTime=%@" ,currentDateStr);
6.
添加边框
[tabButton.layer setBorderWidth:
1.0
];
//
边框宽度
[tabButton.layer setBorderColor:CGColorCreate(CGColorSpaceCreateDeviceRGB(),(CGFloat[]){ 1 , 0 , 0 , 1 })]; // 边框颜色
[tabButton.layer setBorderColor:CGColorCreate(CGColorSpaceCreateDeviceRGB(),(CGFloat[]){ 1 , 0 , 0 , 1 })]; // 边框颜色
7.
在网络失败里面解析数据
/*
[error userInfo] 打印的主要信息如下 :
com.alamofire.serialization.response.error.data = <7b226572 724d7367 223a22e8 aea2e58d 95e4bf9d e5ad98e5 a4b1e8b4 a55be694 b6e8b4a7 e59cb0e5 9d80e7bc 96e7a081 e99499e8 afaf5d22 2c226572 72436f64 65223a22 34303036 30227d>,
NSLocalizedDescription = Request failed: internal server error (500)
*/
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSHTTPURLResponse *errorResponse = [[error userInfo] objectForKey: @"com.alamofire.serialization.response.error.data" ];
NSLog( @"errorResponse=%@" ,errorResponse);
NSDictionary *confirmOrder1 = [NSJSONSerialization JSONObjectWithData:(NSData *)errorResponse options:NSJSONReadingMutableLeaves error: nil ];
[ShowHud ShowProgressHUDwithMessage:[confirmOrder1 objectForKey: @"errMsg" ]];
}];
8.
打印数据直接显示中文
Foundation+Log.m
9.iOS
加载新页面的耗时过长问题
把关键的且耗时少的运算放在
didload
里,这样能减少
ViewController
在切换时候的卡顿时间。
将一些必须的 UI 渲染放在 viewWillAppear 里运算。
一些复杂的运算可以丢在 viewDidAppear 里。
将一些必须的 UI 渲染放在 viewWillAppear 里运算。
一些复杂的运算可以丢在 viewDidAppear 里。
最后是一些
触发型的
做触发加载,或者延迟加载。
10.点击空白区域关闭键盘
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[inputField resignFirstResponder];
}
11.
@property用法详解
strong与weak是由ARC新引入的对象变量属性
strong==retain weak==assign
12.ShareSDK
13.
iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
更好的理解多线程编程demo
14.
url中含有中文解决方法
NSString
*urlStr = [
NSString
stringWithFormat
:
@"%@?content=%@"
,
__FEEDBACKADD
,
_feedBackTextView
.
text
];
//urlStrurl
中含有中文解码
NSString *encodedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)urlStr,(CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",NULL,kCFStringEncodingUTF8));
15.
popToViewController用法
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES];
或
for (UIViewController *temp in self.navigationController.viewControllers) {
if ([temp isKindOfClass:[你要跳转到的Controller class]]) {[self.navigationController popToViewController:temp animated:YES];
}
}
16.要上传的文件的二进制数据
NSData
*imageData=
UIImageJPEGRepresentation
(
_userPic
.
image
,
0.5
);
_userPic
.
image
= [[
UIImage
alloc
]
initWithData
:imageData];
//
创建请求管理者
AFHTTPRequestOperationManager *mgr = [ AFHTTPRequestOperationManager manager ];
[mgr POST :postString parameters :parameters constructingBodyWithBlock :^( id < AFMultipartFormData > formData) {
AFHTTPRequestOperationManager *mgr = [ AFHTTPRequestOperationManager manager ];
[mgr POST :postString parameters :parameters constructingBodyWithBlock :^( id < AFMultipartFormData > formData) {
//
上传的文件全部拼接到
formData
/**
* FileData: 要上传的文件的二进制数据
* name: 上传参数名称
* fileName :上传到服务器的文件名称
* mimeType :文件类型
* FileData: 要上传的文件的二进制数据
* name: 上传参数名称
* fileName :上传到服务器的文件名称
* mimeType :文件类型
*/
[formData
appendPartWithFileData
:imageData
name
:
@"avatar"
fileName
:
@“fileName"
mimeType
:
@"image/png"
];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
17.UIPageControl里的小点的颜色
pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
pageControl.pageIndicatorTintColor = [UIColor grayColor];
18.ios如何让状态栏变成白色的
[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];
如果不行,请在info.plist里面添加 View controller-based status bar appearance NO
可以参考http://beyondvincent.com/blog/2013/11/03/120-customize-navigation-status-bar-ios-7/
19.如:修改导航栏默认标题"忆云美印"的颜色和字体
self.title=@"忆云美印";
self.navigationController.navigationBar.titleTextAttributes=@{UITextAttributeTextColor:[UIColor whiteColor],UITextAttributeFont:[UIFont boldSystemFontOfSize:20]};
20.给label设置圆角
label.layer.borderWidth=1.0f;
label.layer.cornerRadius=5.0f;
21.手动旋转状态栏必须实现下面的方法
- (BOOL)shouldAutorotate{
return NO;}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
22.如何设置只能竖屏显示
修改info.plist里面supportedInterfaceOrientations设置item为portrait就可以了,这个设置为全局.
23.利用UIColor展现#f6f6f6这个传统颜色转换为十进制f6为240
则UIColor *color=[UIColor colorWithRed:240/255.0 green:240/255.0 blue:240/255.0 alpha:1];
24.创建类目,延展,协议,空文件
cmd+n 选择ios Source里面的objective-c File -> File Type的类型(类目,延展,协议,空文件)
25.把视图转换为图片
//把视图转换为图片
UIGraphicsBeginImageContext(oppositeImageView.bounds.size);
[oppositeImageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *oppositeImg=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
26.实现图片视图的拖动效果
- (void)viewDidLoad {
[super viewDidLoad];
//创建图片视图
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 100, 150)];
imageView.userInteractionEnabled=YES;
imageView.image=[UIImage imageNamed:@"ad_1"];
//平移手势
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];
[imageView addGestureRecognizer:pan];
[self.view addSubview:imageView];
}
//平移手势的拖动事件
- (void)panAction:(UIPanGestureRecognizer *)pan{
CGPoint point=[pan translationInView:self.view];
pan.view.center=CGPointMake(pan.view.center.x+point.x, pan.view.center.y+point.y);
[pan setTranslation:CGPointZero inView:self.view];}
27.图片可以响应事件,如 UITextView添加到图片可以进行拖动.
backgrondImage.userInteractionEnabled=YES;
28.常见难题