总结 1

来源:互联网 发布:windows更新大小 编辑:程序博客网 时间:2024/05/30 04:26

当前状态栏

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque;
设置keywindow 的view ,可以放在全部view的最上层,不会被其他view填充
[[UIApplication sharedApplication].keyWindow addSubview:_nav.view];
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(rightPress:) object:rightItem];
取消上一次的事件

自定义导航栏背景

#import "UINavigationBar+customBar.h"#import <QuartzCore/QuartzCore.h>@implementation UINavigationBar (customBar)- (void)drawRect:(CGRect)rect{    [[UIImage imageNamed:@"u7_normal"] drawInRect:rect];}- (void)customNavigationBar{    if ([self respondsToSelector:@selector(setBackgroundColor:)]) {        [self setBackgroundImage:[UIImage imageNamed:@"u7_normal"] forBarMetrics:UIBarMetricsDefault];    } else {        [self drawRect:self.bounds];    }    [self drawRoundCornerAndShadow];}- (void)drawRoundCornerAndShadow {    CGRect bounds = self.bounds;    bounds.size.height +=10;    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:bounds                                                   byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight)                                                         cornerRadii:CGSizeMake(10.0, 10.0)];    CAShapeLayer *maskLayer = [CAShapeLayer layer];    maskLayer.frame = bounds;    maskLayer.path = maskPath.CGPath;    [self.layer addSublayer:maskLayer];    self.layer.mask = maskLayer;    self.layer.shadowOffset = CGSizeMake(3, 3);    self.layer.shadowOpacity = 0.7;    self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath;}@end

定制导航栏按钮

//// ILBarButtonItem.m// Version 1.0// Created by Isaac Lim (isaacl.net) on 1/1/13.//#import "ILBarButtonItem.h"@interface ILBarButtonItem() {    id customTarget;    UIButton *customButton;}@end@implementation ILBarButtonItem- (id)initWithImage:(UIImage *)image frame:(CGRect)frame      selectedImage:(UIImage *)selectedImage             target:(id)target action:(SEL)action {        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];    [btn setFrame:frame];    [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];    [btn setImage:image forState:UIControlStateNormal];    [btn setImage:selectedImage forState:UIControlStateHighlighted];        /* Init method inherited from UIBarButtonItem */    self = [[ILBarButtonItem alloc] initWithCustomView:btn];    if (self) {        /* Assign ivars */        customButton = btn;        customImage = image;        customSelectedImage = selectedImage;        customTarget = target;        customAction = action;    }    return self;}+ (ILBarButtonItem *)barItemWithImage:(UIImage*)image frame:(CGRect)frame                        selectedImage:(UIImage*)selectedImage                               target:(id)target                               action:(SEL)action{    return [[ILBarButtonItem alloc] initWithImage:image frame:frame                                    selectedImage:selectedImage                                           target:target                                           action:action];}- (void)setCustomImage:(UIImage *)image {    customImage = image;    [customButton setImage:image forState:UIControlStateNormal];}- (void)setCustomSelectedImage:(UIImage *)image {    customSelectedImage = image;    [customButton setImage:image forState:UIControlStateHighlighted];}- (void)setCustomAction:(SEL)action {    customAction = action;        [customButton removeTarget:nil                        action:NULL             forControlEvents:UIControlEventAllEvents];        [customButton addTarget:customTarget                     action:action           forControlEvents:UIControlEventTouchUpInside];}@end

原界面不东,弹出一个新的UINavigationControl

- (void)showCollection: (NSInteger)row{    CollectionView *collection = [[CollectionView alloc] init];    collection.title = [_toolsData objectAtIndex:row];    [self setNavTitleView:collection];    collection.back = ^() {        [_nav release];    };    _nav = [[UINavigationController alloc] initWithRootViewController:collection];    [collection release];    [_nav.navigationBar customNavigationBar];    [[UIApplication sharedApplication].keyWindow addSubview:_nav.view];    __block CGRect frame = _nav.view.frame;    frame.origin.x = CGRectGetWidth(frame);    _nav.view.frame = frame;    [UIView animateWithDuration:0.5 animations:^(){        frame.origin.x = 0.f;        _nav.view.frame = frame;    }];}
#pragma mark navigator item action- (void)backBarButtonItem{    CGRect frame = self.navigationController.view.frame;    frame.origin.x = screenWidth;    [UIView animateWithDuration:0.5 animations:^{        self.navigationController.view.frame = frame;    } completion:^(BOOL finished){        if (finished) {            [self.navigationController.view removeFromSuperview];            self.back();        }    }];}

原界面不动,弹出一个view(动画效果而已)

            ShareView *shareView = [[ShareView alloc] initWithFrame:CGRectMake(screenWidth, 0, screenWidth, screenHeight)];            [self setNavTitleView:shareView titleName:[_toolsData objectAtIndex:indexPath.row]];            [app.window.rootViewController.view insertSubview:shareView aboveSubview:app.window.rootViewController.view];            CGRect frame = shareView.frame;            frame.origin.x = 0;            [UIView animateWithDuration:0.5 animations:^(){                shareView.frame = frame;            }];            [shareView release];- (void)backButton{    CGRect frame = self.frame;    frame.origin.x = screenWidth;    [UIView animateWithDuration:0.5 animations:^{        self.frame = frame;    } completion:^(BOOL finished){        [self removeFromSuperview];    }];}
自动单击UITableView的cell

    if ([_data count] <= 0) {        [self addObserver:self forKeyPath:@"data" options:NSKeyValueObservingOptionNew context:nil];    }    [self tableView:_tableView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];}- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{    [_tableView reloadData];    [self tableView:_tableView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];}
self.navigationItem.hidesBackButton = YES; //隐藏点击其它返回按钮时,出现的默认返回按钮

字符串长度或高度计算方式

#pragma  mark calulator stringOfSize;- (CGRect)stringOfSize:(NSString *)str font:(UIFont *)font frame:(CGRect)frame{        CGSize titleSize = [str sizeWithFont:font constrainedToSize:CGSizeMake(frame.size.width, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];    frame = CGRectMake(frame.origin.x, frame.origin.y, titleSize.width, titleSize.height);    return frame;}

UIWebView设置页面字体大小

- (void)setSize:(CGFloat)size{    _fontSize = size;    NSString *jsString = [NSString stringWithFormat:@"<html> \n"                          "<head> \n"                          "<style type=\"text/css\"> \n"                          "body {font-size: %f;}\n"                          "</style> \n"                          "</head> \n"                          "<body>%@</body> \n"                          "</html>", size, _ariticle.intro];    [_webView loadHTMLString:jsString baseURL:nil];}
#pragma mark UIWebView delegate- (void)webViewDidFinishLoad:(UIWebView *)webView{    //左右滚动条    NSString *meta = [NSString stringWithFormat:@"document.getElementsByName(\"viewport\")[0].content = \"width=%f, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no\"", webView.frame.size.width];    [webView stringByEvaluatingJavaScriptFromString:meta];    [webView stringByEvaluatingJavaScriptFromString:     @"var script = document.createElement('script');"     "script.type = 'text/javascript';"     "script.text = \"function ResizeImages() { "     "var myimg,oldwidth;"     "var maxwidth=280;" //缩放系数     "for(i=0;i <document.images.length;i++){"     "myimg = document.images[i];"     "if(myimg.width > maxwidth){"     "oldwidth = myimg.width;"     "myimg.width = maxwidth;"     "myimg.height = myimg.height * (maxwidth/oldwidth);"     "}"     "};"     "}\";"     "document.getElementsByTagName('head')[0].appendChild(script);"];    [webView stringByEvaluatingJavaScriptFromString:@"ResizeImages();"];        //设置scrollview 高度    CGRect frame = webView.frame;    CGSize fittingSize = [webView sizeThatFits:CGSizeMake(screenWidth, 0)];    frame.size = fittingSize;    webView.frame = frame;    NSLog(@"内容字体变小 高度有问题, %f", frame.size.height);    //高度不能一直加    _scrollView.contentSize = CGSizeMake(screenWidth, _allHeight + webView.frame.size.height);}

#pragma mark UIWebViewDelegate- (void)webViewDidFinishLoad:(UIWebView *)webView{    //左右滚动条    NSString *meta = [NSString stringWithFormat:@"document.getElementsByName(\"viewport\")[0].content = \"width=%f, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no\"", webView.frame.size.width];    [webView stringByEvaluatingJavaScriptFromString:meta];}

网络请求服务

#import <Foundation/Foundation.h>typedef void (^FinishNet) (NSMutableData *data);@interface NetRequest : NSMutableURLRequest <NSURLConnectionDataDelegate>@property (nonatomic, retain) NSMutableData *data;@property (nonatomic, retain) NSURLConnection *connection;@property (nonatomic, copy) FinishNet block;- (void)startAsynrc;- (void)cancel;@end#import "NetRequest.h"@implementation NetRequest- (void)startAsynrc{    self.data = [NSMutableData data];    self.connection = [NSURLConnection connectionWithRequest:self delegate:self];}- (void)cancel{    [self cancel];}#pragma mark NSURLConnectionDataDelegate// receive data- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{    [self.data appendData:data];}// finish receive- (void)connectionDidFinishLoading:(NSURLConnection *)connection{    self.block(self.data);}//error- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{    NSLog(@"数据连接错误:%@", error);}@end#import <Foundation/Foundation.h>typedef void (^completion)(id result);@interface NetDeal : NSObject+ (void)getNetInfo:(NSString *)urlstring params:(NSArray *)params isGet:(BOOL)get block:(completion)block;+ (void)getNetFile:(NSString *)urlstring params:(NSArray *)params isGet:(BOOL)get block:(completion)block;//同步获取数据+ (id)getNetFileSynch:(NSString *)urlstring params:(NSArray *)params isGet:(BOOL)get;@end#import "NetDeal.h"#import "NetRequest.h"@implementation NetDeal// json+ (void)getNetInfo:(NSString *)urlstring params:(NSArray *)params isGet:(BOOL)get block:(completion)block{    //封装参数    if (params != nil) {        NSMutableString *urlnew = [NSMutableString stringWithString:urlstring];        for (int i = 0; i < [params count]; i ++) {            [urlnew appendFormat:@"&%@", [params objectAtIndex:i]];        }        urlstring = urlnew;    }    //  转换成NSURL    NSURL *url = [NSURL URLWithString:urlstring];    NetRequest *request = [NetRequest requestWithURL:url];    [request setTimeoutInterval:30];    if (!get) {        //do smo    }    request.block = ^(NSMutableData *data){        id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];        block(result);    };    [request startAsynrc];}//file+ (void)getNetFile:(NSString *)urlstring params:(NSArray *)params isGet:(BOOL)get block:(completion)block{    if (params != nil) {        NSMutableString *urlNew = [NSString stringWithString:urlstring];        for (int i = 0; i < [params count]; i ++) {            [urlNew appendFormat:@"&%@", [params objectAtIndex:i]];        }        urlstring = urlNew;    }    NSURL *url = [NSURL URLWithString:urlstring];    NetRequest *request = [NetRequest requestWithURL:url];    [request setTimeoutInterval:30];    if (!get) {            }    request.block = ^(NSMutableData *data){        block(data);    };    [request startAsynrc];}//同步获取数据+ (id)getNetFileSynch:(NSString *)urlstring params:(NSArray *)params isGet:(BOOL)get{    if (params != nil) {        NSMutableString *urlNew = [NSString stringWithString:urlstring];        for (int i = 0; i < [params count]; i ++){            [urlNew appendFormat:@"&%@", [params objectAtIndex:i]];        }        urlstring = urlNew;    }    NSURL *url = [NSURL URLWithString:urlstring];    NSURLRequest *request = [[[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10] autorelease];    NSError *error = nil;    NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];    if (error) {        NSLog(@"接受数据失败:%@", error);        return nil;    }    return received;}@end

数据库相关操作(使用FMDB)

#import <Foundation/Foundation.h>@interface DBService : NSObject//查询- (NSArray *)query:(NSString *)sql;//增删改- (BOOL)update:(NSString *)sql;@end#import "DBService.h"#import "FMDatabase.h"#import "FMResultSet.h"#import "DBConnection.h"@implementation DBService//查询- (NSArray *)query:(NSString *)sql{    FMDatabase *base = [[DBConnection getInstance] loadDB:collectionDataBaseName];    NSMutableArray *list = nil;    @try {        FMResultSet *result = [base executeQuery:sql];        list = [[[NSMutableArray alloc]init] autorelease];        while ([result next]) {            int column = [result columnCount];            for (int i = 0; i < column; i ++){                NSMutableDictionary *dic = [[NSMutableDictionary alloc]init];                [dic setObject:[result stringForColumnIndex:i] forKey:[result columnNameForIndex:i]];                [list addObject:dic];                [dic release];            }        }    }    @catch (NSException *exception) {        NSLog(@"%@", exception);    }    @finally {        [base close];    }    return list;}//增删改- (BOOL)update:(NSString *)sql{    BOOL result = NO;    FMDatabase *base = [[DBConnection getInstance] loadDB:collectionDataBaseName];    @try {        result = [base executeUpdate:sql];    }    @catch (NSException *exception) {        NSLog(@"%@", exception);    }    @finally {        [base close];    }    return result;}@end#import <Foundation/Foundation.h>@class FMDatabase;@interface DBConnection : NSObject+ (DBConnection *)getInstance;- (FMDatabase *)loadDB:(NSString *)dbName;@end#import "DBConnection.h"#import "FMDatabase.h"@implementation DBConnectionstatic DBConnection *instance = nil;+ (DBConnection *)getInstance{    @synchronized(self)    {        if (instance == nil) {            instance = [[self alloc]init];        }    }    return instance;}- (FMDatabase *)loadDB:(NSString *)dbName{    FMDatabase *db = [FMDatabase databaseWithPath:[[ToolsClass getDocumentPath] stringByAppendingPathComponent:dbName]];    if (![db open]) {        [db release];        NSLog(@"can't open it");        return nil;    }    return  db;}@end









0 0
原创粉丝点击