李洪强iOS开发之静态库的打包一

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #000000 }
span.s1 { }
span.s2 { font: 18.0px Menlo }

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #1e9421 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421 }
span.s1 { font: 18.0px Menlo }
span.s2 { }
span.s3 { color: #000000 }
span.s4 { font: 18.0px "PingFang SC" }

//静态库一般做一下几种事情

//1 工具类 算法逻辑

新建工具类LHQTools

定义类方法

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
span.s1 { }
span.s2 { color: #703daa }

+ (NSInteger)sumWithNum1: (NSInteger)num1 andNum2:(NSInteger)num2;

类方法的实现

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px }
span.s1 { }
span.s2 { color: #703daa }
span.s3 { color: #c42275 }

+(NSInteger)sumWithNum1:(NSInteger)num1 andNum2:(NSInteger)num2{

return num1 + num2;

}

使用

在主控制器计算值

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #294c50 }
span.s1 { color: #000000 }
span.s2 { color: #3e1e81 }
span.s3 { color: #c81b13 }
span.s4 { color: #c42275 }
span.s5 { color: #3c828b }
span.s6 { }
span.s7 { color: #0435ff }

NSLog(@"%ld",(long)[LHQTools sumWithNum1:10 andNum2:10]);


p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #1e9421 }
span.s1 { font: 18.0px Menlo }
span.s2 { }

//2 实现加载一定的资源,放在bundle中避免资源重名

将存放图片的bundle拖入文件夹

定义类方法

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
span.s1 { }
span.s2 { color: #6122ae }

+ (UIImage *)loadLogo;

实现类方法

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c81b13 }
span.s1 { }
span.s2 { color: #6122ae }
span.s3 { color: #000000 }
span.s4 { font: 18.0px "PingFang SC" }
span.s5 { color: #c42275 }
span.s6 { color: #3e1e81 }

+(UIImage *)loadLogo{

//把图片封装到bundle里面

return [UIImage imageNamed:@"CZTools.bundle/logo.png"];

}

来到主控制器中使用

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
span.s1 { color: #6122ae }
span.s2 { }
span.s3 { color: #3e1e81 }
span.s4 { color: #0435ff }
span.s5 { color: #703daa }
span.s6 { color: #3c828b }
span.s7 { color: #294c50 }
span.s8 { color: #c42275 }

UIImageView *imageView1 = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];

imageView1.image = [LHQTools loadLogo];

[self.view addSubview:imageView1];

这个时候,运行程序,会显示这张图片

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421 }
span.s1 { color: #000000 }
span.s2 { }
span.s3 { font: 18.0px "PingFang SC" }

//3 封装视图

新建继承自UIView的类

定义类方法

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c81b13 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c42275 }
span.s1 { color: #822d0f }
span.s2 { }
span.s3 { color: #c42275 }
span.s4 { color: #6122ae }
span.s5 { color: #703daa }

#import <UIKit/UIKit.h>

@interface LHQDemoView : UIView

- (instancetype)initWithFrame:(CGRect)frame andCompelete:(void(^)(NSString *msg))block;

@end

实现类方法

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c81b13 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3c828b }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #1e9421 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421; min-height: 21.0px }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c42275 }
p.p7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px }
p.p8 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
p.p9 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3e1e81 }
p.p10 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #6122ae }
span.s1 { color: #822d0f }
span.s2 { }
span.s3 { color: #c42275 }
span.s4 { color: #000000 }
span.s5 { font: 18.0px "PingFang SC" }
span.s6 { font: 18.0px Menlo }
span.s7 { color: #6122ae }
span.s8 { color: #703daa }
span.s9 { color: #3e1e81 }
span.s10 { color: #0435ff }
span.s11 { color: #c81b13 }
span.s12 { font: 18.0px "PingFang SC"; color: #c81b13 }
span.s13 { color: #539aa4 }

#import "LHQDemoView.h"

@interface LHQDemoView()

//block定义的时候一定要用copy

/*

block默认在栈中  栈中内存归系统管理

系统管理有个弊端:到作用于结束就被干掉

执行了一个copy操作之后,就会把block从栈中放到堆中

会自动有一个强引用来指向它

*/

@property(nonatomic,copy)void(^block)(NSString *);

@end

@implementation LHQDemoView

- (instancetype)initWithFrame:(CGRect)frame andCompelete:(void(^)(NSString *msg))block{

if(self = [super initWithFrame:frame]){

UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];

[btn setTitle:@"提示" forState:UIControlStateNormal];

[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];

[self addSubview:btn];

self.block = block;

}

return self;

}

- (void)btnClicked: (UIButton *)btn{

self.block(@"点击了某个按钮");

NSLog(@"btnClicked");

}

- (void)drawRect:(CGRect)rect{

//画一个圆

UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:self.bounds];

[[UIColor redColor]setFill];

//    [path stroke];

[path fill];

}

来到主控制器中调用:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3e1e81 }
span.s1 { }
span.s2 { font: 18.0px "PingFang SC" }
span.s3 { color: #3c828b }
span.s4 { color: #3e1e81 }
span.s5 { color: #294c50 }
span.s6 { color: #0435ff }
span.s7 { color: #6122ae }
span.s8 { color: #000000 }
span.s9 { color: #c81b13 }
span.s10 { font: 18.0px "PingFang SC"; color: #c81b13 }
span.s11 { color: #c42275 }
span.s12 { color: #703daa }

//3 封装视图

LHQDemoView *demoView = [[LHQDemoView alloc]initWithFrame:CGRectMake(100, 200, 100, 100) andCompelete:^(NSString *msg) {

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"温馨提示" message:msg delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil, nil];

[alert show];

}];

[self.view addSubview:demoView];

效果:

时间: 2024-10-22 02:07:33

李洪强iOS开发之静态库的打包一的相关文章

李洪强iOS开发之静态库

iOS开发拓展篇—静态库 一.简单介绍 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的分类 根据源代码的公开情况,库可以分为2种类型 (1)开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetworking (2)闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现 主要分为:静态库.动态库 二.静态库和动态库 1.静态库和动态库的存在形式 静态库:.a 和 .framework 动态库:.dylib 和 .framework 2.静态库和动

李洪强iOS开发之性能优化技巧

李洪强iOS开发之性能优化技巧 通过静态 Analyze 工具,以及运行时 Profile 工具分析性能瓶颈,并进行性能优化.结合本人在开发中遇到的问题,可以从以下几个方面进行性能优化. 一.view优化 1.不透明的View 设置为opaque. 2.根据实际情况重用.延迟加载或预加载View. 3.减少subviews数量,定制复杂cell使用drawRect.尽量使用drawRect而不是layoutSubView. 4.不直接调用drawRect. layoutSubviews方法.万不

李洪强iOS开发之动态获取UILabel的bounds

李洪强iOS开发之动态获取UILabel的bounds 在使用UILabel存放字符串时,经常需要获取label的长宽数据,本文列出了部分常用的计算方法. 1.获取宽度,获取字符串不折行单行显示时所需要的长度  CGSize labelBounds = [str sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)]; 注:如果想得到宽度的话,size的width应该设为MAXFLOAT. 2.获取高度,获取字符串在指定的siz

李洪强iOS开发-网络新闻获取数据思路回顾

李洪强iOS开发-网络新闻获取数据思路回顾 01 创建一个继承自AFHTTPSessionManager的工具类:LHQNetworkTool 用来发送网络请求获取数据  1.1 定义类方法返回单例对象 1.2 单例的实现,设置baseURL,设置超时时长等 02 创建一个分类, 传入一个类的参数返回一个数组,返回当前类的所有属性 用在模型中处理模型数据 03 创建图片轮播模型(model)类发送请求获取轮播图片的数据  3.1 定义属性: 标题,图片 定义两个类方法: (1)传入一个字典的参数

李洪强iOS开发之数据存储

李洪强iOS开发之数据存储 iOS应用数据存储的常用方式 1.lXML属性列表(plist)归档 2.lPreference(偏好设置) 3.lNSKeyedArchiver归档(NSCoding) 4.lSQLite3 5.lCore Data Documents: 保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录.例如,游戏应用可将游戏存档保存在该目录 tmp: 保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除.应用没有运行时,系统也可能会清除该目录

李洪强iOS开发之 - 项目架构

李洪强iOS开发之 - 项目架构 01 - 在Appdelegate中设置跟控制器 //导入头文件

李洪强iOS开发之-修改状态栏的字体的颜色

李洪强iOS开发之-修改状态栏的字体的颜色 修改的效果: -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [_magicController.view setFrame:CGRectMake(0, 0, CFScreenW, self.view.height-120)]; if ([UIApplication sharedApplication].statusBarStyle != UIStatusBar

李洪强iOS开发之 - enum与typedef enum的用法

李洪强iOS开发之 - enum与typedef enum的用法 01 - 定义枚举类型 上面我们就在ViewController.h定义了一个枚举类型,枚举类型的值默认是连续的自然数,例如例子中的TO_BE_PAID=0,//开始   那么其后的就依次为1,2,3....所以一般只需要设置枚举中第一个的值就可以. 注意: 在定义枚举类型的时候一定要定义在.h中的#imort 和€interface之间定义,位置不能错了 02 - 定义操作类型 enum和enum typedef 在IOS中的使

李洪强iOS开发之添加手势

李洪强iOS开发之添加手势 02 - 添加手势