zoukankan      html  css  js  c++  java
  • Iphone 开发常用代码


    + (BOOL)isHeadphone
    {//判断耳机是否插入
    UInt32 propertySize = sizeof(CFStringRef);
    CFStringRef state = nil;
    AudioSessionGetProperty(kAudioSessionProperty_AudioRoute
    ,&propertySize,&state);
    //return @"Headphone" or @"Speaker" and so on.
    //根据状态判断是否为耳机状态
    if ([(NSString *)state isEqualToString:@"Headphone"] ||[(NSString *)state isEqualToString:@"HeadsetInOut"])
    {
    return YES;
    }
    else {
    return NO;
    }
    }


    屏幕截图
    - (UIImage *)screenImage
    {//截取全屏
    //前置声明是消除警告,截屏
    CGImageRef UIGetScreenImage();
    CGImageRef img = UIGetScreenImage();
    img = CGImageCreateWithImageInRect(img, CGRectMake(0, 40, 640, 920));
    UIImage* scImage=[UIImage imageWithCGImage:img];
    UIImageWriteToSavedPhotosAlbum(scImage, nil, nil, nil);
    return scImage;
    }

    - (UIImage *)screenImage
    {//截取view,layer的图像
    UIGraphicsBeginImageContext(CGSizeMake(320, 480));
    CGContextRef context_ = UIGraphicsGetCurrentContext();
    [self.view.layer renderInContext:context_];
    [self.backGroundView.layer renderInContext:context_];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
    UIGraphicsEndImageContext();
    return viewImage;
    }




    //检查网络是否可用
    -(BOOL)checkNetworkAvailable {
        /*
         *check the network
         */
        SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, "www.youtube.com");
        SCNetworkReachabilityFlags flags;
       
        BOOL success                = SCNetworkReachabilityGetFlags(reachability, &flags);
        BOOL isDataSourceAvailable  = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
        CFRelease(reachability);
        return isDataSourceAvailable;
    }
    更改cell选中的背景
        UIView *myview = [[UIView alloc] init];
        myview.frame = CGRectMake(0, 0, 320, 47);
        myview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"0006.png"]];
        cell.selectedBackgroundView = myview;

    在数字键盘上添加button:
    //定义一个消息中心
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; //addObserver:注册一个观察员 name:消息名称
    - (void)keyboardWillShow:(NSNotification *)note {
        // create custom button
        UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
        doneButton.frame = CGRectMake(0, 163, 106, 53);
        [doneButton setImage:[UIImage imageNamed:@"5.png"] forState:UIControlStateNormal];
        [doneButton addTarget:self action:@selector(addRadixPoint) forControlEvents:UIControlEventTouchUpInside];
      
        // locate keyboard view
        UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];//返回应用程序window
        UIView* keyboard;
        for(int i=0; i<[tempWindow.subviews count]; i++) //遍历window上的所有subview
        {
            keyboard = [tempWindow.subviews objectAtIndex:i];
            // keyboard view found; add the custom button to it
            if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
            [keyboard addSubview:doneButton];
        }
    }

    正则表达式使用
    被用于正则表达式的字串必须是可变长的,不然会出问题

    将一个空间放在视图之上
    [scrollView insertSubview:searchButton aboveSubview:scrollView];

    从本地加载图片
    NSString *boundle = [[NSBundle mainBundle] resourcePath];
    [web1 loadHTMLString:[NSString stringWithFormat:@"<img src='0001.png'/>"] baseURL:[NSURL fileURLWithPath:boundle]];

    从网页加载图片并让图片在规定长宽中缩小
    [cell.img loadHTMLString:[NSString stringWithFormat:@"<html><body><img src='%@' height='90px' width='90px'></body></html>",goodsInfo.GoodsImg] baseURL:nil];
    将网页加载到webview上通过javascript获取里面的数据,如果只是发送了一个连接请求获取到源码以后可以用正则表达式进行获取数据
    NSString *javaScript1 = @"document.getElementsByName('.u').item(0).value";
    NSString *javaScript2 = @"document.getElementsByName('.challenge').item(0).value";
    NSString *strResult1 = [NSString stringWithString:[theWebView stringByEvaluatingJavaScriptFromString:javaScript1]];
    NSString *strResult2 = [NSString stringWithString:[theWebView stringByEvaluatingJavaScriptFromString:javaScript2]];

    用NSString怎么把UTF8转换成unicode
    utf8Str //
    NSString *unicodeStr = [NSString stringWithCString:[utf8Str UTF8String] encoding:NSUnicodeStringEncoding];

    View自己调用自己的方法:
    [self performSelector:@selector(loginToNext) withObject:nil afterDelay:2];//黄色段为方法名,和延迟几秒执行.

    显示图像:
    CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 109.0f);
    UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];
    [myImage setImage:[UIImage imageNamed:@"myImage.png"]];
    myImage.opaque = YES; //opaque是否透明
    [self.view addSubview:myImage];
    [myImage release];

    WebView:
    CGRect webFrame = CGRectMake(0.0, 0.0, 320.0, 460.0);
    UIWebView *webView = [[UIWebView alloc] initWithFrame:webFrame];
    [webView setBackgroundColor:[UIColor whiteColor]];
    NSString *urlAddress = @"http://www.google.com";
    NSURL *url = [NSURL URLWithString:urlAddress];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [webView loadRequest:requestObj];
    [self addSubview:webView];
    [webView release];

    显示网络活动状态指示符
    这是在iPhone左上部的状态栏显示的转动的图标指示有背景发生网络的活动。
    UIApplication* app = [UIApplication sharedApplication];
    app.networkActivityIndicatorVisible = YES;

    动画:一个接一个地显示一系列的图象
    NSArray *myImages = [NSArray arrayWithObjects: [UIImage imageNamed:@"myImage1.png"], [UIImage imageNamed:@"myImage2.png"], [UIImage imageNamed:@"myImage3.png"], [UIImage imageNamed:@"myImage4.gif"], nil];
    UIImageView *myAnimatedView = [UIImageView alloc];
    [myAnimatedView initWithFrame:[self bounds]];
    myAnimatedView.animationImages = myImages; //animationImages属性返回一个存放动画图片的数组
    myAnimatedView.animationDuration = 0.25; //浏览整个图片一次所用的时间
    myAnimatedView.animationRepeatCount = 0; // 0 = loops forever 动画重复次数
    [myAnimatedView startAnimating];
    [self addSubview:myAnimatedView];
    [myAnimatedView release];

    动画:显示了something在屏幕上移动。注:这种类型的动画是“开始后不处理” -你不能获取任何有关物体在动画中的信息(如当前的位置) 。如果您需要此信息,您会手动使用定时器去调整动画的X和Y坐标
    这个需要导入QuartzCore.framework
    CABasicAnimation *theAnimation;
    theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
    //Creates and returns an CAPropertyAnimation instance for the specified key path.
    //parameter:the key path of the property to be animated
    theAnimation.duration=1;
    theAnimation.repeatCount=2;
    theAnimation.autoreverses=YES;
    theAnimation.fromValue=[NSNumber numberWithFloat:0];
    theAnimation.toValue=[NSNumber numberWithFloat:-60];
    [view.layer addAnimation:theAnimation forKey:@"animateLayer"];

    Draggable items//拖动项目
    Here's how to create a simple draggable image.//这是如何生成一个简单的拖动图象
    1. Create a new class that inherits from UIImageView
    @interface myDraggableImage : UIImageView { }
    2. In the implementation for this new class, add the 2 methods:
    - (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
    {
    // Retrieve the touch point 检索接触点
    CGPoint pt = [[touches anyObject] locationInView:self];
    startLocation = pt;
    [[self superview] bringSubviewToFront:self];
    }
    - (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
    {
    // Move relative to the original touch point 相对以前的触摸点进行移动
    CGPoint pt = [[touches anyObject] locationInView:self];
    CGRect frame = [self frame];
    frame.origin.x += pt.x - startLocation.x;
    frame.origin.y += pt.y - startLocation.y;
    [self setFrame:frame];
    }
    3. Now instantiate the new class as you would any other new image and add it to your view
    //实例这个新的类,放到你需要新的图片放到你的视图上
    dragger = [[myDraggableImage alloc] initWithFrame:myDragRect];
    [dragger setImage:[UIImage imageNamed:@"myImage.png"]];
    [dragger setUserInteractionEnabled:YES];

    线程:
    1. Create the new thread:
    [NSThread detachNewThreadSelector:@selector(myMethod) toTarget:self withObject:nil];
    2. Create the method that is called by the new thread:
    - (void)myMethod
    {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    *** code that should be run in the new thread goes here ***
    [pool release];
    }
    //What if you need to do something to the main thread from inside your new thread (for example, show a loading //symbol)? Use performSelectorOnMainThread.
    [self performSelectorOnMainThread:@selector(myMethod) withObject:nil waitUntilDone:false];

    Plist files
    Application-specific plist files can be stored in the Resources folder of the app bundle. When the app first launches, it should check if there is an existing plist in the user's Documents folder, and if not it should copy the plist from the app bundle.
    // Look in Documents for an existing plist file
    NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    myPlistPath = [documentsDirectory stringByAppendingPathComponent:
    [NSString stringWithFormat: @"%@.plist", plistName] ];
    [myPlistPath retain];
    // If it's not there, copy it from the bundle
    NSFileManager *fileManger = [NSFileManager defaultManager];
    if ( ![fileManger fileExistsAtPath:myPlistPath] )
    {
    NSString *pathToSettingsInBundle = [[NSBundle mainBundle] pathForResource:plistName ofType:@"plist"];
    }
    //Now read the plist file from Documents
    NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectoryPath = [paths objectAtIndex:0];
    NSString *path = [documentsDirectoryPath stringByAppendingPathComponent:@"myApp.plist"];
    NSMutableDictionary *plist = [NSDictionary dictionaryWithContentsOfFile: path];
    //Now read and set key/values
    myKey = (int)[[plist valueForKey:@"myKey"] intValue];
    myKey2 = (bool)[[plist valueForKey:@"myKey2"] boolValue];
    [plist setValue:myKey forKey:@"myKey"];
    [plist writeToFile:path atomically:YES];

    Alerts
    Show a simple alert with OK button.
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:
    @"An Alert!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];

    Info button
    Increase the touchable area on the Info button, so it's easier to press.
    CGRect newInfoButtonRect = CGRectMake(infoButton.frame.origin.x-25, infoButton.frame.origin.y-25, infoButton.frame.size.width+50, infoButton.frame.size.height+50);
    [infoButton setFrame:newInfoButtonRect];

    Detecting Subviews
    You can loop through subviews of an existing view. This works especially well if you use the "tag" property on your views.
    for (UIImageView *anImage in [self.view subviews])
    {
    if (anImage.tag == 1)
            { // do something }
    }


    http://fei263.blog.163.com/
    以下是我自己的:
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto:?subject=nihao&body=dddddddd"]];一句代码发邮件,个中情况适用
  • 相关阅读:
    360浏览器通过.favdb文件恢复前一个登录账号的收藏夹到新账号
    react跨域问题Django配置允许跨域No 'Access-Control-Allow-Origin' header is present on the requested resource',及其解决办法
    Scratch3.0后台开发记录(一)创建Django 后台服务器
    Scratch3.0开发记录(三)添加登录功能之使用fetch配置登录端口
    谈谈绩效考核
    前端面试中该问些什么?
    用cocos2d-html5做的消除类游戏《英雄爱消除》(3)——游戏主界面
    用cocos2d-html5做的消除类游戏《英雄爱消除》(2)——Block设计实现
    用cocos2d-html5做的消除类游戏《英雄爱消除》(1)——系统主菜单
    用cocos2d-html5做的消除类游戏《英雄爱消除》(4)——游戏结束
  • 原文地址:https://www.cnblogs.com/ligun123/p/2148982.html
Copyright © 2011-2022 走看看