iOS笔记(常用的一些知识点)



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];

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) {
}];

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 ;
    }
}

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" ];

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);

6. 添加边框
[tabButton.layer setBorderWidth: 1.0 ]; // 边框宽度
[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 里。
最后是一些 触发型的 做触发加载,或者延迟加载。

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:2animated: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) {
        // 上传的文件全部拼接到 formData
        /**
         *  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.常见难题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值