解析JSON数据,转换为NSData格式

            NSError *jsonError;
            NSData *objectData = [content2 dataUsingEncoding:NSUTF8StringEncoding];
            NSDictionary *result = [NSJSONSerialization JSONObjectWithData:objectData
                                                                 options:NSJSONReadingMutableContainers
                                                                   error:&jsonError];


数值转换为字符串

    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:myDictionary
                                                       options:0 // OR NSJSONWritingPrettyPrinted
                                                         error:&error];
    NSString *jsonString;
    if (! jsonData) {
        NSLog(@"bv_jsonStringWithPrettyPrint: error: %@", error.localizedDescription);
        jsonString = @"{}";
    } else {
        jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }


NSJSONWritingPrettyPrinted是可读性的字符串,0则不换行的格式
首先新建一个基于Sigle view Application的项目,名为GestureTest;我的项目结构如下:

往viewController.xib文件里拖动一个imageView,并使覆盖整个屏幕,改动属性为:

viewController.h文件:



     #import <UIKit/UIKit.h>  
      
     @interface ViewController : UIViewController{  
         IBOutlet UIImageView *imageView;  
     }  
     @property (nonatomic,retain)IBOutlet UIImageView *imageView;  
     @end

并使xib文件里的imageView与之连接;

然后是viewController.m文件的实现部分:



     @synthesize imageView;  
      
     CGFloat lastScaleFactor=1;//放大、缩小  
     CGFloat  netRotation;//旋转  
     CGPoint netTranslation;//平衡  
     NSArray *images;//图片数组  
     int imageIndex=0;//数组下标  
      
     - (void)viewDidLoad  
   {  
       //1、创建手势实例,并连接方法handleTapGesture,点击手势  
       UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTapGesture:)];  
       //设置手势点击数,双击:点2下  
       tapGesture.numberOfTapsRequired=2;  
       // imageView添加手势识别  
       [imageView addGestureRecognizer:tapGesture];  
       //释放内存  
       [tapGesture release];  
        
       //2、手势为捏的姿势:按住option按钮配合鼠标来做这个动作在虚拟器上  
       UIPinchGestureRecognizer *pinchGesture=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(handlePinchGesture:)];  
       [imageView addGestureRecognizer:pinchGesture];//imageView添加手势识别  
       [pinchGesture release];  
        
       //3、旋转手势:按住option按钮配合鼠标来做这个动作在虚拟器上  
       UIRotationGestureRecognizer *rotateGesture=[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(handleRotateGesture:)];  
       [imageView addGestureRecognizer:rotateGesture];  
       [rotateGesture release];  
        
       //4、拖手势  
       UIPanGestureRecognizer *panGesture=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanGesture:)];  
      // [imageView addGestureRecognizer:panGesture];  
       [panGesture release];  
        
       //5、划动手势  
       images=[[NSArray alloc]initWithObjects:@"cell.jpg",@"heihua.jpg",@"xuanyi.jpg", nil];  
       //右划  
       UISwipeGestureRecognizer *swipeGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeGesture:)];  
       [imageView addGestureRecognizer:swipeGesture];  
       [swipeGesture release];  
       //左划  
       UISwipeGestureRecognizer *swipeLeftGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeGesture:)];  
       swipeGesture.direction=UISwipeGestureRecognizerDirectionLeft;//不设置黑夜是右  
       [imageView addGestureRecognizer:swipeLeftGesture];  
       [swipeLeftGesture release];  
        
       //6、长按手势  
       UILongPressGestureRecognizer *longpressGesutre=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLongpressGesture:)];  
       //长按时间为1秒  
       longpressGesutre.minimumPressDuration=1;  
       //允许15秒中运动  
       longpressGesutre.allowableMovement=15;  
       //所需触摸1次  
       longpressGesutre.numberOfTouchesRequired=1;  
       [imageView addGestureRecognizer:longpressGesutre];  
       [longpressGesutre release];  
        
       [super viewDidLoad];  
       // Do any additional setup after loading the view, typically from a nib.  
   }  
   //双击屏幕时会调用此方法,放大和缩小图片  
   -(IBAction)handleTapGesture:(UIGestureRecognizer*)sender{  
       //判断imageView的内容模式是否是UIViewContentModeScaleAspectFit,该模式是原比例,按照图片原时比例显示大小  
       if(sender.view.contentMode==UIViewContentModeScaleAspectFit){  
           //把imageView模式改成UIViewContentModeCenter,按照图片原先的大小显示中心的一部分在imageView  
           sender.view.contentMode=UIViewContentModeCenter;  
       }else{  
           sender.view.contentMode=UIViewContentModeScaleAspectFit;  
       }  
   }  
   //捏的手势,使图片放大和缩小,捏的动作是一个连续的动作  
   -(IBAction)handlePinchGesture:(UIGestureRecognizer*)sender{  
       //得到sender捏手势的大小  
       CGFloat factor=[(UIPinchGestureRecognizer*)sender scale];  
       if(factor>1){  
           //图片放大  
           sender.view.transform=CGAffineTransformMakeScale(lastScaleFactor+(factor-1), (lastScaleFactor+(factor-1)));  
                                                              
       }else{  
           //缩小  
           sender.view.transform=CGAffineTransformMakeScale(lastScaleFactor*factor, lastScaleFactor*factor);  
                                                              
       }  
       //状态是否结束,如果结束保存数据  
       if(sender.state==UIGestureRecognizerStateEnded){  
           if(factor>1){  
               lastScaleFactor+=(factor-1);  
           }else{  
               lastScaleFactor*=factor;  
           }  
       }  
   }  
   //旋转手势  
   -(IBAction)handleRotateGesture:(UIGestureRecognizer*)sender{  
       //浮点类型,得到sender的旋转度数  
       CGFloat rotation=[(UIRotationGestureRecognizer*)sender rotation];  
       //旋转角度CGAffineTransformMakeRotation  
       CGAffineTransform transform=CGAffineTransformMakeRotation(rotation+netRotation);  
       //改变图像角度  
      sender.view.transform=transform;  
      //状态结束,保存数据  
      if(sender.state==UIGestureRecognizerStateEnded){  
          netRotation+=rotation;  
      }  
        
  }  
  //拖手势  
  -(IBAction)handlePanGesture:(UIGestureRecognizer*)sender{  
      //得到拖的过程中的xy坐标  
      CGPoint translation=[(UIPanGestureRecognizer*)sender translationInView:imageView];  
      //平移图片CGAffineTransformMakeTranslation  
      sender.view.transform=CGAffineTransformMakeTranslation(netTranslation.x+translation.x, netTranslation.y+translation.y);  
      //状态结束,保存数据  
      if(sender.state==UIGestureRecognizerStateEnded){  
          netTranslation.x+=translation.x;  
          netTranslation.y+=translation.y;  
      }  
        
  }  
  //划动手势  
  -(IBAction)handleSwipeGesture:(UIGestureRecognizer*)sender{  
      //划动的方向  
      UISwipeGestureRecognizerDirection direction=[(UISwipeGestureRecognizer*) sender direction];  
      //判断是上下左右  
      switch (direction) {  
          case UISwipeGestureRecognizerDirectionUp:  
              NSLog(@"up");  
              break;  
          case UISwipeGestureRecognizerDirectionDown:  
              NSLog(@"down");  
              break;  
          case UISwipeGestureRecognizerDirectionLeft:  
              NSLog(@"left");  
              imageIndex++;//下标++  
              break;  
          case UISwipeGestureRecognizerDirectionRight:  
              NSLog(@"right");  
              imageIndex--;//下标--  
              break;  
          default:  
              break;  
      }  
      //得到不越界不<0的下标  
      imageIndex=(imageIndex<0)?([images count]-1):imageIndex%[images count];  
      //imageView显示图片  
      imageView.image=[UIImage imageNamed:[images objectAtIndex:imageIndex]];  
        
  }  
  //长按手势  
  -(IBAction)handleLongpressGesture:(UIGestureRecognizer*)sender{  
      //创建警告  
      UIActionSheet *actionSheet=[[UIActionSheet alloc]initWithTitle:@"Image options" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"Save Image",@"Copy", nil];  
      //当前view显示警告  
      [actionSheet showInView:self.view];  
      [actionSheet release];  
  }  
  -(void)dealloc{  
      [images release];  
      [imageView release];  
      [super dealloc];  
  }  


摘自:http://blog.csdn.net/chang6520/article/details/7924313
总体来说,是不确定打开哪一个

参考以下的页面:
1 Multiple apps with the same URL Scheme - iOS
引用
If two apps register the same custom URL scheme, it is undefined which app will actually be launched. One will be launched but there is no way to know.

Here's a real kicker. If you have two apps on your device with the same URL scheme, and you delete the one that actually gets launched, the other one will not get launched by the URL without rebooting the iOS device.


2 more than one app has same URL Identifier for Custom URL Application?
引用
Custom URL apps are accepted by Apple. However if multiple apps on the device have registered same URL scheme then the behavior is undefined. From iOS Application Programming Guide, "If multiple third-party applications register to handle the same URL scheme, it is undefined as to which of the applications is picked to handle URLs of that type."


3 苹果官方唤起过程讲述
很多app都是设计为tabItem是两个状态,当前选择状态和未选择状态
ios7之前是这样的:

UITabBarItem* item = [self.tabBar.items objectAtIndex:1];
        [item setFinishedSelectedImage:[UIImage imageNamed:@"1.png"]
           withFinishedUnselectedImage:[UIImage imageNamed:@"2.png"]];


7.0之后storyboard里面可以这样:

    id result = [self.tabBarItem initWithTitle:@"相片" image:[UIImage imageNamed:@"photo"] selectedImage:[UIImage imageNamed:@"photo_cur"]];
    if (!result) {/*do sth*/}


试过也一般,但官方是这样写的,备忘一下:

When URLs are just not resolving the way you want it, to time to clear or flush the dns nameserver local cache -flush-the-loacl-cache

How to clear the local DNS cache….

OSX 10.10

sudo discoveryutil udnsflushcaches


OSX 10.9

dscacheutil -flushcache; sudo killall -HUP mDNSResponder


OSX 10.7  – 10.8

sudo killall -HUP mDNSResponder


OSX 10.5 – 10.6

sudo dscacheutil -flushcache


Windows

ipconfig /flushdns


Linux (depending on what you’re running)

/etc/init.d/named restart
/etc/init.d/nscd restart
分页: 7/132 第一页 上页 2 3 4 5 6 7 8 9 10 11 下页 最后页 [ 显示模式: 摘要 | 列表 ]

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐