一、CocoaPods的安装
在安装CocoaPods之前,要确保你的设备已经配置好了ruby环境:
先打开终端程序:>_
1、查看当前Ruby版本
Mac电脑自带Ruby环境,但是安装CocoaPods需要2.2.2版本及以上的,查看当前Ruby版本
ruby -v
如果出现了“ruby 版本号......”,就说明你的环境符合要求。如果不符合要求,就要对ruby进行升级:
若不符合要求:通过通过rvm来安装或升级Ruby
分别执行下面三条命令
curl -L get.rvm.io | bash -s stable
source ~/.bashrc
source ~/.bash_profile
列出ruby可安装的版本信息
rvm list known
安装ruby
rvm install 3.2.2
或
rvm install ruby-3.2.2
ruby升级成功后,就可以继续下一步了
2、更新Gem和更换源
sudo gem update --system
//移除原有的源
gem sources --remove https://rubygems.org/
//更换为在国内的镜像源
//这里也不一定要是这个源,也可以自行搜素选择清华大学的源或者是其他的源
gem sources --add https://gems.ruby-china.com/
验证你的Ruby镜像是并且仅是ruby-china
gem sources -l
如果是以下结果说明正确,如果有其他的请自行百度解决
*** CURRENT SOURCES ***
//这里是你更换的源的地址
https://gems.ruby-china.com/
3、开始安装CocoaPods,以下二选一
第一种:
sudo gem install -n /usr/local/bin cocoapods
第二种:
brew install cocoapods
4、安装本地库(非必需)
说明:该步骤是安装本地库,不安装也没事,项目可以照常pod install。
只不过不安装的话就不能使用pod search 命令了;
如果你追求完美那就继续往下看;
/// A.如果你开启了kx上网,建议直接从官方进行下载安装(推荐)
git clone https://github.com/CocoaPods/Specs.git ~/.cocoapods/repos/trunk
/// B.这是国内的镜像地址,速度刚刚的,想省事的就直接选这个吧
git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git ~/.cocoapods/repos/trunk
二、cocoapods集成第三方框架到项目工程里面去
这里就拿一会要说的Masonry框架示范。
1、先去Xcode创建一个新项目
2、在终端cd 拖入该项目
3、输入指令vim podfile创建podfile文件,然后按i进入到编辑模式,出现如下图:
然后开始输入以下代码:
platform:ios, '11.0'
target 'demoPic' do
pod 'Masonry'
end
platform:ios, '11.0'-->是设置该项目最低适配的iOS版本(注意该处的ios都为小写)
pod 'Masonry'--> 是为该项目添加第三方框架,此处添加的框架是Masonry
target 'demoPic' do -->的demoPic是你的项目名
输入完后,按“esc”,然后输入:wq,再回车退出编辑,然后输入以下指令:
pod update
# 或者
pod install
就可以看到你的工程文件中出现了以下几个文件:
在黄色的星圈起来的那个文件中,你就可以开始写你的代码了。
三、Masonry介绍
Masonry是一个轻量级的布局框架,拥有自己的描述语法,采用更优雅的链式语法封装自动布局,简洁明了,并具有高可读性,而且同时支持 iOS 和 Max OS X。相较与NSLayoutConstraints,masonry更加方便快捷,大量减少适配时间。
使用Masonry的注意事项
使用Masonry添加约束需要在addSubview方法之后,否则程序会崩。
使用时经常会加mas_前缀,如果不想加前缀则在引用Masonry文件前加
//定义这个常量,就可以不用在开发过程中使用mas_前缀
#define MAS_SHORTHAND
//定义这个常量,就可以让Masonry帮我们自动把基础数据类型的数据,自动装箱为对象类型
#define MAS_SHORTHAND_GLOBALS
3.约束的三种方法
//添加新约束
- (NSArray *)mas_makeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;
//更新约束,会覆盖之前的约束
- (NSArray *)mas_updateConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;
//完全移除旧约束,添加新约束
- (NSArray *)mas_remakeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;
在Masonry框架中,为什么不能先约束了frame, 然后再去添加该视图?
原因是:在OC中,在Masonry框架中,不能先约束了frame再去添加该视图,因为Masonry是基于AutoLayout的,AutoLayout会根据视图的约束来计算视图的frame。如果先约束了frame,再添加该视图,那么Masonry就无法计算出正确的约束,可能会导致视图的位置、大小等出现问题。因此,在使用Masonry时,应该先添加视图,再使用Masonry添加约束。
四、Masonry的demo:查看照片墙
这个demo的作用是将照片排列成一个照片墙,然后在点击照片的时候照片会自动放大并显示在屏幕中央,再点击一次照片又会缩小并回到原来的位置
#import "PicViewController.h"
#import "Masonry.h"
@interface PicViewController ()
@property (nonatomic, strong) UIScrollView *scrollView;
@property (nonatomic, strong) UIButton *backButton;
@end
@implementation PicViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor orangeColor];
self.scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
self.scrollView.contentSize = CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height*2);
[self.view addSubview:self.scrollView];
//将每一个照片都设置成按钮,并给按钮添加点击事件
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 3; j++) {
UIButton *pictureButton = [UIButton buttonWithType:UIButtonTypeCustom];
NSString *strPic = [NSString stringWithFormat:@"pict%d.jpg",3 * i + j + 1];
UIImage *image = [UIImage imageNamed:strPic];
[pictureButton setBackgroundImage:image forState:UIControlStateNormal];
[self.scrollView addSubview:pictureButton];
[pictureButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(110 * j + 30);
make.top.mas_equalTo(200 * i + 50);
make.width.and.height.mas_equalTo(@100);
}];
pictureButton.selected = NO;
pictureButton.tag = i*10+j;
[pictureButton addTarget:self action:@selector(pressButton:) forControlEvents:UIControlEventTouchUpInside];
}
}
}
//为按钮添加选择事件,被选择的时候放大并显示在屏幕中央,不被选择的时候就缩小并回到正常位置
- (void)pressButton :(UIButton*)button {
if (button.selected == NO) {
[self.scrollView bringSubviewToFront:button ];
[button mas_remakeConstraints:^(MASConstraintMaker *make) {
make.center.equalTo(self.view);
make.width.and.height.mas_equalTo(@300);
}];
button.selected = YES;
} else {
[self.scrollView addSubview:button];
NSInteger j = button.tag%10;
NSInteger i = button.tag/10;
[button mas_remakeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(110 * j + 30);
make.top.mas_equalTo(200 * i + 50);
make.width.and.height.mas_equalTo(@100);
}];
button.selected = NO;
}
}
@end
正常状态:
选中状态:
CocoaPods安装转载自: