思路一:利用Masonry约束x、y坐标的起始位置,在动画时间内改变x坐标轴的宽度和y坐标轴的高度。结果:坐标轴从屏幕左上角开始绘制,不是理想中的效果。代码如下:
//绘制坐标轴
- (void)drawCoordSystem{
UIView *xCoord = [selfgetLine];
UIView *yCoord = [selfgetLine];
[xCoord mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(@(self.view.bounds.size.width - 20.0));
}];
[yCoord mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(@(self.view.bounds.size.height - 60));
}];
[self.viewsetNeedsUpdateConstraints];
[self.viewupdateConstraintsIfNeeded];
[UIViewanimateWithDuration:5.0animations:^{
[self.viewlayoutIfNeeded];
}];
}
//设置坐标轴起始位置
- (UIView *)getLine{
UIView *lineView = [[UIViewalloc] init];
[self.viewaddSubview:lineView];
[lineView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.view).with.offset(10.0);
make.bottom.equalTo(self.view).with.offset(-20.0);
make.width.mas_equalTo(@(2.0));
make.height.mas_equalTo(@(2.0));
}];
lineView.backgroundColor = [UIColorblackColor];
lineView.alpha =0.618;
return lineView;
}
思路二:通过计算确定x、y坐标轴的起始位置,动画改变宽度、高度。结果:坐标轴从左下角开始绘制,满足需求。代码如下:
- (void)drawCoordSystem{
UIView *xLine = [self setLine];
UIView *yLine = [self setLine];
CGRect xRect = xLine.frame;
CGRect yRect = yLine.frame;
xRect.size.width = self.view.bounds.size.width - 20;
yRect.size.height = self.view.bounds.size.height - 50;
yRect.origin.y -= yRect.size.height;
[UIView animateWithDuration:5.0 animations:^{
xLine.frame = xRect;
yLine.frame = yRect;
}];
}
- (UIView *)setLine{
UIView *lineView = [[UIView alloc] init];
[self.view addSubview:lineView];
CGFloat lineViewX = 10.0;
CGFloat lineViewY = self.view.bounds.size.height - 20.0;
CGFloat lineViewW = 2.0;
CGFloat lineViewH = 2.0;
lineView.frame = CGRectMake(lineViewX, lineViewY, lineViewW, lineViewH);
lineView.backgroundColor = [UIColor blackColor];
lineView.alpha = 0.618;
return lineView;
}
本文介绍了两种在iOS应用中使用Objective-C绘制坐标系的方法。第一种利用Masonry约束改变坐标轴的尺寸,但结果不理想。第二种通过计算坐标轴起始位置,实现了从左下角开始绘制坐标系的动画效果,满足了需求。
1613

被折叠的 条评论
为什么被折叠?



