`
wenxin2009
  • 浏览: 320513 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ios学习流水账3

    博客分类:
  • ios
 
阅读更多

1、线程两种方式:

//1、新开启一个线程
    [NSThread detachNewThreadSelector:@selector(test) toTarget:self withObject:nil];
    //2、GCD线程
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    size_t number = 100;
    dispatch_async(queue, ^{
        dispatch_apply(number, queue, ^(size_t iteration) {
            
        });
    });

 

2、双击事件被单击事件拦截

[singleTap requireGestureRecognizerToFail:doubleTap];

 

3、调试时获取类名

DLOG(@"%@",NSStringFromClass([vc  class]));//通过类获取类名
DLOG(@"%@",NSClassFromString(@"DiscoverViewController"));//通过类名获取类

 

4、KVO,“一对一”对象之间的通信,例子如下:

#import <Foundation/Foundation.h>

@interface StockData : NSObject

@property(nonatomic,strong) NSString *stockName;
@property(nonatomic,assign) float price;
@end


#import "StockData.h"

@implementation StockData

@end

 

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
- (IBAction)btnAction:(id)sender;
@property (weak, nonatomic) IBOutlet UILabel *labShow;

@end

//
//  ViewController.m
//  A
//  KVO例子
//  Created by cs on 15/6/7.
//  Copyright (c) 2015年 dwen. All rights reserved.
//

#import "ViewController.h"
#import "StockData.h"

@interface ViewController (){
    StockData *stock;
    UILabel *_lab1;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    stock = [[StockData alloc] init];
    [stock setValue:@"中展" forKey:@"stockName"];
    [stock setValue:@"100.0" forKey:@"price"];
    [stock addObserver:self forKeyPath:@"price" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:NULL];
    
    _labShow.text = [NSString stringWithFormat:@"%@",[stock valueForKey:@"price"]];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

- (IBAction)btnAction:(id)sender {
    //设值
    [stock setValue:@"20.0" forKey:@"price"];
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if ([keyPath isEqualToString:@"price"]) {
        _labShow.text = [NSString stringWithFormat:@"%@",[stock valueForKey:@"price"]];
    }
}

- (void)dealloc{

    //TODO 清空释放掉

     [selfremoveObserver:selfforKeyPath:@"price"context:nil];

}
@end

 

5、instancetype和id区别:

    相同点:都可作为方法的返回类型

    不同点:

    一、instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型对象。

    二、instancetype只能作为返回值,不能像id那样作为参数

 

6、UImage防止拉伸设置

    UIImage *selectImg = [UIImage imageNamed:@"select-checked"];
    UIEdgeInsets insets = UIEdgeInsetsMake(0, 0, 0, 30);
    selectImg = [selectImg resizableImageWithCapInsets:insets];
    [btn setBackgroundImage:selectImg forState:UIControlStateNormal];

 

7、ios中的时间毫秒,long型

        NSNumber *createAtN = [dicPushBody objectForKey:@"createAt"];

 

        long  createAt = [createAtN longValue];

 

8、获取年、月、日

NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
        NSDateComponents *dateComponent = [calendar components:unitFlags fromDate:now];
int year = (int)[dateComponent year];//年

 

9、url schemes 可在Safari浏览器中打开应用。前提是需在工程中plist文件中配置下



 

配置好后,刷到真机上。然后在Safari地址中输入:artgoer://com.test    就可打开应用。

 

10、设置tabBar背景色

      self.tabBar.barTintColor = [ColorUtilcolorFromHexRGB:@"#000000"];//设置tabBar背景色 

 

11、block回传参数应用示例:

   block适合两个页面之前传值,不适合页面乘积深时,回传参数。

    AddressManageViewController.h文件

 

//定义block
typedef void (^AddressManageBlock) (AddressVo *addressVo);//回传参数

@interface AddAddressViewController : UITableViewController

//声明block
@property (strong, nonatomic) AddressManageBlock addressBlock;

@end
 

 

    AddressmanageViewController.m文件

 

if (self.addressBlock) {
                    self.addressBlock(aVo);
                    [self.navigationController popViewControllerAnimated:YES];
                }
 
    SettlementViewController.m文件

 

 

//地址管理
- (void) goAddressManageAction{
    AddressManageViewController *addressVc = [StoryboardUtil getVCWithSbIden:@"My" identify:@"AddressManageViewController"];
    addressVc.scourceType = NSStringFromClass([SettlementViewController class]);
    [self.navigationController pushViewController:addressVc animated:YES];
    addressVc.addressBlock = ^(AddressVo *aVo){
        //TODO
        self.addressVo = aVo;
        [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:UITableViewRowAnimationAutomatic];
    };
}
 

 12、滑动返回上一页。在push后添加如下代码。

GoodsDetailViewController *goodsDetailVC = [StoryboardUtil getVCWithSbIden:@"Goods" identify:@"GoodsDetailViewController"];
    [self.navigationController pushViewController:goodsDetailVC animated:YES];
    
    //TODO滑动返回
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.delegate = nil;
    }

 

12、把view添加到Window上

UIWindow *win = [[UIApplication sharedApplication].delegate window];
 [win addSubview:self.view];

 

13、导航titleView添加自定义View

    UIView *titleV = [[UIView alloc] init];
    titleV.frame = CGRectMake(0, 0, 120, 44);
    _btnTopic = [UIButton buttonWithType:UIButtonTypeCustom];
    [_btnTopic setFrame:CGRectMake(0, 0, 50, 40)];
    [_btnTopic setTitle:@"专题" forState:UIControlStateNormal];
    _btnTopic.titleLabel.font = [UIFont boldSystemFontOfSize:18.0f];
    [_btnTopic setTitleColor:WordTextColor forState:UIControlStateNormal];
    [titleV addSubview:_btnTopic];
    _btnDisplay = [UIButton buttonWithType:UIButtonTypeCustom];
    [_btnDisplay setFrame:CGRectMake(70, 0, 50, 40)];
    [_btnDisplay setTitle:@"展览" forState:UIControlStateNormal];
    _btnDisplay.titleLabel.font = [UIFont boldSystemFontOfSize:18.0f];
    [_btnDisplay setTitleColor:TitleColor forState:UIControlStateNormal];
    [titleV addSubview:_btnDisplay];
    self.navItem.titleView = titleV;

 

14、循环布局约束

for (NSLayoutConstraint *lc in headView.lcSpace) {
                lc.constant = 10;
            }

 

15、图片保存到相册

//图片保存到相册
UIImageWriteToSavedPhotosAlbum(lastImg,  self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), nil);

 

- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{    NSString *message;
    if (!error) {
        message = @"成功保存到相册";
        [self showStrAlert:@"成功保存到相册"];
    }else
    {
        [self showStrAlert:[NSString stringWithFormat:@"%@",error]];
    }
}

 

16、读取ttf文件字体:

-(UIFont*)customFont{
    NSString *fontPath = [[NSBundle mainBundle] pathForResource:@"209" ofType:@"ttf"];
    NSURL *url = [NSURL fileURLWithPath:fontPath];
    CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)url);
    if (fontDataProvider == NULL)
        return nil;
    CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider);    CGDataProviderRelease(fontDataProvider);
    if (newFont == NULL) return nil;
    NSString *fontName = (__bridge NSString *)CGFontCopyFullName(newFont);
    //....
    NSData *data =[fontName dataUsingEncoding:NSUTF8StringEncoding];
    NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
    NSString*   temp = [[NSString alloc] initWithData:data encoding:encoding];//data为NSData类型
    NSLog(@"fontName======%@==%@",fontName,temp);
    UIFont *font = [UIFont fontWithName:fontName size:12];
    CGFontRelease(newFont);
    return font;
}

 

17、指定页面禁止侧滑返回:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    // 禁用返回手势
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    }
}
- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    //开启返回手势,解决侧滑返回时需跳到指定页面
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    }

}

 

18、iOS懒加载

//定义
@property (nonatomic,strong) NSMutableArray *dataArr;

//注意
//...在第一次使用时用self.dataArr,而不能用_dataArr,否则不会产生对象
//...当程序进来时不会产生dataArr对象,只有当第一次self.dataArr调用时,这时会走get方法。可以节省不少内存空间。实例化用懒加载是个不错选择

#pragma mark Getter
- (NSMutableArray *) dataArr{
    if (!_dataArr) {
        _dataArr = [[NSMutableArray alloc] init];
    }
    return _dataArr;
}

 

19.UIButton显示图片和文字,呈上下排列,图片显示上方,文字显示下方。

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
            btn.frame = CGRectMake((ScreenWidth/4)*i, 5, ScreenWidth/4, 110);
            [btn.titleLabel setFont:[UIFont systemFontOfSize:15]];
            [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
            [btn setTitle:vo.label forState:UIControlStateNormal];
            btn.titleLabel.textAlignment = NSTextAlignmentCenter;
            
            UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(btn.imageView.frame.origin.x+32, btn.imageView.frame.origin.y+20, 30, 30)];
            NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:vo.labelPic]];
            UIImage *img = [UIImage imageWithData:data];
            [imageView setImage:img];
            [btn addSubview:imageView];
            //关键代码
            btn.titleEdgeInsets = UIEdgeInsetsMake(28, 0, 0, 0);
            btn.imageEdgeInsets = UIEdgeInsetsMake(-15,25,0,0);

 

  • 大小: 30.9 KB
分享到:
评论

相关推荐

    IOS 学习PPT 英文版

    《iOS基础学习:英文PPT解析》 iOS开发是当今移动应用开发领域的重要一环,尤其对于想要进入这个领域的初学者来说,掌握基础知识至关重要。这份"iOS学习PPT"(英文版)是一份宝贵的资源,它系统地介绍了iOS开发的...

    ios安全学习笔记

    iOS安全学习笔记的知识点涵盖了多个方面,从学习资料的搜集到优秀博客文章和GitHub资源的整理,这为iOS安全研究者提供了一个丰富的资源库。以下是对上述内容中提及知识点的详细说明: 1. iOS安全学习资料汇总 首先...

    IOS课程学习体系

    3. **数据管理**:iOS开发中的数据存储包括SQLite数据库、Core Data和UserDefaults。了解如何有效地存储和检索数据对于应用程序的性能至关重要。 4. **网络编程**:iOS应用往往需要与服务器进行交互,因此需要掌握...

    ios学习路线iOS学习路线

    在iOS学习之旅中,开发者需要掌握一系列技术和工具,才能创建出色的应用程序。以下是一条详细的iOS学习路线,帮助你从入门到精通。 首先,你需要熟悉基础的编程语言。iOS开发主要使用Swift,这是一种由Apple推出的...

    ios学习资料下载的网址

    在iOS学习的过程中,掌握各种资源和工具的获取途径是非常重要的,因为这可以帮助开发者迅速找到所需的教程、代码示例以及文档,从而提升学习效率。以下是一些关于iOS学习资料下载的网址,涵盖了数据保存、游戏开发...

    iOS学习完整路线图

    iOS学习完整路线图,C语言、Objective-C、iOS基础、iOS高级、游戏开发

    ios-label 流水布局.zip

    在iOS开发中,"流水布局"(Waterfall Layout)是一种常见的UI设计模式,它通常用于展示商品列表或者图片网格,让界面看起来更有层次感和...通过学习和分析这个demo,开发者可以更好地理解和掌握iOS中的高级布局技巧。

    ios学习总结

    【iOS学习总结】 在iOS开发领域,这是一份个人学习经验的总结,涵盖了从入门到进阶的关键知识点。iOS开发主要使用Swift编程语言,这是一种由Apple公司推出,旨在提升开发效率,同时保持代码简洁和安全的语言。Swift...

    基于iOS的账本小程序

    为了学习ios编程,自己设计了一个账本的小程序,功能如下: 1,成员列表:显示所有成员,添加成员,删除成员,交费,查询个人消费详情。 2.添加消费:消费信息,消费人员,消费金额, 3.消费清单:根据开始和截止日期...

    IOS学习资源

    在iOS学习过程中,掌握iOS 5这一版本的知识至关重要,因为它是iOS发展史上的一个重要里程碑,引入了许多创新功能和改进。以下是一些关于iOS 5学习的关键知识点: 1. **通知中心(Notification Center)**:iOS 5...

    IOS学习资料二

    Objective-C编程之道:IOS设计模式解析.pdf

    ios学习资料打包

    本压缩包“ios学习资料打包”提供了两个核心的学习资源:“Objective-C.2.0程序设计.pdf”和“一步一步学习iOS5编程第二版.pdf”,旨在帮助开发者系统地掌握Objective-C和iOS开发的基本概念和实践技巧。 1. **...

    《app-dev-curriculum-cn》 iOS playground文件 IOS 学习实战 swift

    这份资源包含了丰富的playground文件,旨在帮助学习者通过实践来深入理解iOS开发的关键概念和技术。Playgrounds在Xcode中是一种强大的工具,允许开发者即时查看代码效果,无需完整构建应用程序,从而加速学习进程。 ...

    IOS学习PPT

    【标题】"IOS学习PPT"揭示了这个压缩包的核心内容是关于iOS开发的学习资源,主要以PPT的形式呈现。这种格式通常用于教学或讲座,便于条理清晰地讲解复杂概念和技术。 【描述】中提到的几个关键知识点如下: 1. **...

    ios应用开发学习资料

    ios应用开发学习的好资料,很好的学习资料

    大学生 毕业设计 项目实训 基于ionic开发的一款手机应用APP-流水账app(前后端全套源代码).zip

    这个压缩包文件包含了一个大学生毕业设计的完整项目实训,它是一个基于Ionic框架开发的手机应用APP,名为“流水账app”。这个应用旨在帮助用户记录日常生活中的收支情况,提供便捷的财务管理功能。下面是关于这个...

    ios资料,学习资料,基础资料

    3. **UIKit框架**:UIKit是iOS应用程序用户界面的主要构建块。学习如何使用UIViewController、UIView、UILabel、UIButton等控件来设计和实现用户交互界面。 4. **Storyboard和Auto Layout**:Storyboard用于可视化...

    iOS学习视频网址

    ios学习网址,初学入门必备,把整套学完基本上就可以正式进入开发了。

    学习IOS基础教程电子书(1)

    在本《学习iOS基础教程电子书(1)》中,主要涵盖了针对iOS开发初学者的基础知识,旨在帮助读者系统地理解和掌握iOS应用开发的核心概念。这本书的起点是为那些对编程有一定了解,但对iOS平台尚属陌生的读者设计的。...

Global site tag (gtag.js) - Google Analytics