这两天都没有写博客,虽然也有两样小东西出来 但是,,说实话我没掌握很好 代码好相似 记不住
来源:互联网 发布:笑知大学话剧 编辑:程序博客网 时间:2024/05/22 10:33
这两天,前天我做了一个小计算器,今天算是复习了一下,在view上放置静态图和动态图
我感觉有时候做东西的时候很盲目,所以就试着想了想步骤:
我觉得,第一步: 根据你想要达到的功能,想好你需要的控件
第二步: 根据你的控件,拉出控件的连接点。分两类:一类是按键,一类是文本 。 然后考虑到按键一般都会有相应的响应,接下来的主要动作都是围绕按键来的。
第三步: 在接口文件中声明变量了,现在用的多的是 @VIewControl.h 和一个你创建的文件,这个计算器中 calcutor 里声明较多,@VIewControl.h 中只有一个类变量
第四步: 然后再跟据你想要达到的功能,第一步开始,一步一步去写代码。主要是根据按键功能来写,比我之前还是有些许进步的!
就以下篇代码为例:
我之前用 if 语句做的,代码很长,重复率很高。后来只好重来,用 Switch 语句来写。
这种方法 将 0--9 的数字统一,设置一个 didclick 函数里,分别用 tag 0--9 到时候只需要判断就好了。
#import "ViewController.h"
#import "calcutor.h"
@interface ViewController ()
@property (weak, nonatomic)IBOutletUILabel *resultLabel;
@end
-------------------------------------------------------------------下面的代码是今天复习的图片编辑的结果,我将两张比较单调的图片上传到 工程里面 然后再 将其中一幅图片作为背景。
int i=10; //
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
calc=[[calcutoralloc]init];
UIImage *image = [ [ UIImage alloc ] initWithFrame : CGRectMake(0,0,320,590) ] ;
定义一个Image 类型的变量 image 并且确定它的范围( 0 , 0 , 320 , 590 ) initWithFrame 这个词是结合两句的关键,前句的 init “和” “with” 后一句的 frame
imageView.image = [ UIImage imageNamed : @"风景4.png" ] ;
//本来是将 image 的图片赋给 imageView.image 的,这一句扩展了 直接将 名字是@“ 风景4.png ”的 图片赋给了 imageView.image 简化了一个步骤。
[self.view addSubview:imageView];
//将对象 加入 界面 , self 的原因是 View 在该文件中声明。
imageView2.alpha=0.3;
// 调节图片透明度的代码 取值 0--1
}
------------------------------------------------
- (IBAction)UIButton:(UIButton *)sender
{
float value=[sender.currentTitlefloatValue];
if(calc.op=='+'||calc.op=='-'||calc.op=='x'||calc.op=='/')
{
if(calc.point=='.')
{
calc.opValue2=calc.opValue2+value/i;
i=i*10;
}
else
{
calc.opValue2=calc.opValue2*10+value;
}
self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue2];
}
---------
上述部分判断,有了运算符号之后,对第二个操作数的有无小数点的相关赋值
--------
else
{
if (calc.point=='.')
{
calc.opValue1=calc.opValue1+value/i;
i=i*10;
}
else
{
calc.opValue1=calc.opValue1*10+value;
}
self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue1];
}
}
--------------------------------------------------------
------------------------------------------------------
- (IBAction)dot:(UIButton *)sender {
calc.point='.';
}
- (IBAction)yunsuan:(UIButton *)sender
{
calc.point='0';
i=10;
switch (sender.tag)
//这个 Switch 函数,用 sender 原因是 当前的按键内,用 sender 来做类型名 tag 值就是 + - x / = 的替代。
{
case 1:
[calc work];
// 从这里引用出它的 work 方法,进入到 calcutor.m 函数中去 进行 -(void)work 的运算。然后得到一个返回值。下面是相同的道理。
calc.op='+';
self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue1];
/// 这句话是将 操作符1 的值 赋值给 self.resultLabel.text
break;
// break 语句的意思是,跳出该循环
case 2:
[calc work];
calc.op='-';
self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue1];
break;
case 3:
[calc work];
calc.op='x';
self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue1];
break;
case 4:
[calc work];
calc.op='/';
self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue1];
break;
case 5:
[calc work];
calc.op='=';
self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue1];
default:
break;
}
}
--------------------------------------------------------
- (IBAction)equal:(UIButton *)sender {
float result=[calcwork];
// 通过你按的等号 ,进入 -(void)work;中求得返回值,作为结果复制到 float 型的 result 局部变量中
self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",result];
// 作为结果肯定是要输出的 ,所以将这个值赋予 resultLabel 文本中去。
i=10;
calc.op='0';
calc.point='0';
float value=[sender.currentTitlefloatValue];
if(calc.point!='.')
{
calc.opValue2=calc.opValue2*10+value;
}
else
{
calc.opValue2=calc.opValue2+value/i;
i=i*10;
}
}
- (IBAction)clear:(UIButton *)sender {
i=10;
// 必须将 i 的值要重置到 10 因为下次运算的 i 值,经过上述的运算已经乘了好几个10了
calc.point='0';
calc.op='0';
calc.opValue1=0;
calc.opValue2=0;
self.resultLabel.text=[NSStringstringWithFormat:@"0"];
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
@implementation calcutor
-(float)work
{
if ( self.op=='+')
{
self.opValue1 +=self.opValue2;
/// 这样做的理由是能够进行多次运算。
self.opValue2=0;
// 在这里给操作符2赋一个0,接下来便可以连续运算,直接输入操作符2
return self.opValue1;
// 返回操作符1即返回一个结果
}
else if( self.op=='-')
{
self.opValue1 -=self.opValue2;
self.opValue2=0;
return self.opValue1;
}
else if(self.op=='x')
{
self.opValue1 *=self.opValue2;
self.opValue2=0;
return self.opValue1;
}
else if(self.op=='/')
{
self.opValue1 /=self.opValue2;
self.opValue2=0;
return self.opValue1;
}
return 0;
}
@end
- 这两天都没有写博客,虽然也有两样小东西出来 但是,,说实话我没掌握很好 代码好相似 记不住
- 说实话还没明白这是什么,但是可以试试看
- 正则表达式 不管在什么语言的编程代码中,都可以看到正则表达式的身影。如果没有正则,jQuery也不可能用不到1万行能完成的。个人感觉正则还是得多练,多写。(当然前提是要对其规则有很好的理解) 我在开发
- zz 关于一个flex 加 SFS的配置 但是我自己没有测试出来 那个SFSEvent报错 不知道有没有人能解决
- 这篇虽然不是自己写的,但是感觉对我这样的IT届新人非常有用,也希望对你们有所帮助
- 连续两天有没有写blog了;
- 虽然还是小白,但是我也要慢慢学习
- 我也写博客
- 我也有博客!!
- 这是一个关于版本更新的ScrollView 的创建(虽然我也没看懂)
- 这几个网站我喜欢,虽然不是很有名,但是操作起来绝对好用到爆!
- 两天没写了。。。
- 两天没写了
- 好几天没写了,这两天有点忙,身边又没电脑,最好还是坚持吧。
- 虽然用了好几年的CSDN了,却是第一次在这上面写博客
- 那些好用到跳,但是记不住的ADB命令
- 我也有博客了
- 我也有博客了
- jQuery练习--隐藏与显示效果之间的切换
- vba 调用 dll
- poj 2551 除法
- NYOJ 264 国王的魔镜
- Mongoose 基本功能使用
- 这两天都没有写博客,虽然也有两样小东西出来 但是,,说实话我没掌握很好 代码好相似 记不住
- 白羊座
- 2011-7-11任务完成情况
- oracle优化思考-双刃剑
- 黑马程序员_JAVA基础-选择循环结构
- 08-hibernate一对一实例
- 类的静态成员变量
- c语言入门(六)二维数组
- 加速计