Ios开发知识点小结

关于MVC分层设计: 

MVC分层将逻辑和界面控件分开, 控件对应相关的函数来响应操作.

在ios开发中, 最简单最快的就是利用视图控制(.xib)来完成界面,控件等非逻辑处理。

让然,也可以手动分层,全用代码控制。 由于我第一次接触MVC模式开发,开始不太习惯,所以在项目中还是用的老方法,要什么就写什么。

六角跳棋中,底层为棋盘:

chessBoardImg = [UIImageimageNamed:@"紫高亮.jpg"];   // UIImage  设置图片,将贴在底层容器中哦给你无

chessBoardViewImg = [[UIImageViewalloc]initWithImage:chessBoardImg]; //UIImageView 一个视图, 并贴上图片。

[chessBoardViewImgsetFrame:CGRectMake(0, 0, 320, 480)]; //给视图设置显示窗口

[selfinsertSubview:chessBoardViewImgatIndex: 0];       //将图片置于底层


棋盘图片放置在底层。 棋子为button,贴在棋盘上面, 每个棋子都有对应的相应函数:

[redChessBt addTarget:selfaction:@selector(redChessSelect:)forControlEvents:UIControlEventTouchUpInside];


点击redChessBt即红色按钮时,将对选中的红色按钮执行 redChessSelect操作. 
选中棋子后, 将计算改棋子在棋盘中可走的位置,并点亮可走区作提示. 这里用到棋盘遍历搜索.
如果是电脑走棋,则遍历该色10个棋子, 选取一个最佳走棋位置走棋.

主棋盘下放贴另一个菜单视图, 包括返回, 重新开始, 帮助等.  

// 放置浮动菜单

CGRect menuRect;

menuRect = CGRectMake(0, 435, 320, 80);

menuView = [[UIView alloc]initWithFrame:menuRect];    // 增加一个UIView 视图

menuViewImg = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"菜单.png"]];

[menuViewImg setFrame:CGRectMake(0, 0, 320, 80)];

[menuView addSubview:menuViewImg]; // 图片填充视图

//初始化重新开始, 返回, 帮助, 菜单四个按钮。

clearBoard = [[UIButton alloc]initWithFrame:CGRectMake(115, 45, 90, 35)];

[clearBoard setImage:restartImg forState:UIControlStateNormal];      //原始图片效果

[clearBoard setImage:restartImg1 forState:UIControlStateHighlighted]; //点击后图片的效果。

[clearBoard addTarget:self action:@selector(restartGame:) forControlEvents:UIControlEventTouchUpInside];

[menuView addSubview:clearBoard];     // clearBoard按钮属于menuView 视图

backHome = [[UIButton alloc]initWithFrame:CGRectMake(12, 45, 60, 35)];

[backHome setImage:backImg forState:UIControlStateNormal];

[backHome setImage:backImg1 forState:UIControlStateHighlighted];

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

[menuView addSubview:backHome];

helpBt = [[UIButton alloc]initWithFrame:CGRectMake(250, 45, 60, 35)];

[helpBt setImage:helpImg forState:UIControlStateNormal];

[helpBt setImage:helpImg1 forState:UIControlStateHighlighted];

[helpBt addTarget:self action:@selector(helpView:) forControlEvents:UIControlEventTouchUpInside];

[menuView addSubview:helpBt];

Menu = [[UIButton alloc]initWithFrame:CGRectMake(12, 20, 60, 30)];

[Menu addTarget:self action:@selector(showMenu:) forControlEvents:UIControlEventTouchUpInside];

[menuView addSubview:Menu];


[self addSubview:menuView]; 

[self bringSubviewToFront:menuView];


//allChess字典中找到关键位置为ap的坐标,并加入allChessTemp临时存放的字典(语法)


CGPoint app = CGPointFromString([allChess objectForKey:[NSNumber numberWithInt:ap]]);

[allChessTemp setObject:NSStringFromCGPoint(app) forKey:[NSNumber numberWithInt:ap]]; 


// 落子点选择  点击棋盘放大的操作

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

if (ifTwoTimeChessBoard == NO){

CGPoint endTouch;

UITouch *touch = [touches anyObject];

endTouch = [touch locationInView:self];  // 只需获取最后的touch

chessX = endTouch.x; // 在小棋盘上的x坐标

chessY = endTouch.y; // 在小棋盘上的y坐标

[self zoomIn]; //棋盘放大

}else{

[self zoomOut]; //棋盘缩小

}

}


// 棋盘放大

- (void)zoomIn {

int x = (int)(chessX - (Renju_margin1 - Renju_paneSize1/2))/Renju_paneSize1;

int y = (int)(chessY - (Renju_margin1 - Renju_paneSize1/2))/Renju_paneSize1;

float originX; // 棋盘放大后超出边界的x长度

float originY; // 棋盘放大后超出边界的y长度

int bx = Renju_margin1_b + x*Renju_paneSize1_b;

int by = Renju_margin1_b + y*Renju_paneSize1_b;


//    ********    控制点击边界位置时候, 放大棋盘显示棋盘不应该越界   *************

originX = (float)bx - chessX;

originY = (float)by - chessY;

if (originX <= 0) {

originX = 0;

}

if (originY <= 0) {

originY = 0;

}

if (originX >= 320) {

originX = 320;

}

if (originY >= yDown) {

originY = yDown;

}

if (chessX >=0 && chessX <= xLeft) {

originX = 0;

}

if (chessX >= xRight && chessX <= 320) {

originX = 320;

}

if (chessY >= 100 && chessY <= yUp) {

originY = 100;

}

if (chessY >= 340 && chessY <= yDown) {

originY = yDown;

}

if (chessX > xLeft && chessX < xRight) {

originX = 2*chessX - 160;

}

if (chessY > yUp && chessY < yDown) {

originY = 2*chessY - 360;

}

chessX_out = originX;

chessY_out = originY;

[UIView beginAnimations:nil context:nil];

[UIView setAnimationDuration:0.1];

[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

self.transform = CGAffineTransformMakeScale(2, 2);   //Scale 放大2倍

self.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);

[UIView commitAnimations];

ifTwoTimeChessBoard = YES;

[delegate scrollviewZoomIn:chessX_out andY:chessY_out];

}else{

return;

}

}


// 恢复成小棋盘

- (void)zoomOut {


[delegate scrollviewZoomOut];

[UIView beginAnimations:nil context:nil];

[UIView setAnimationDuration:0.3];

[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

self.frame = CGRectMake(-160, -160, self.frame.size.width, self.frame.size.height);

self.transform = CGAffineTransformMakeScale(1, 1);

[UIView commitAnimations];

self.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);

ifTwoTimeChessBoard = NO;

choosePosition = NO;

}


/ / 待续 , 先就整理这么多.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值