iOS开发实现计算器功能

本文实例为大家分享了iOS实现计算器功能的具体代码,供大家参考,具体内容如下
效果图
iOS开发实现计算器功能
文章图片

Masonry
使用数组来自动约束

NSArray *buttonArrayOne = @[_buttonAC, _buttonLeftBracket, _buttonRightBracket, _buttonDivide]; //withFixedSpacing: 每个view中间的间距//leadSpacing: 左最开始的间距//tailSpacing:; 右边最后的的间距[buttonArrayOne mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedSpacing:15 leadSpacing:15 tailSpacing:15]; [buttonArrayOne mas_makeConstraints:^(MASConstraintMaker *make) {make.top.equalTo(@(selfHeight - (buttonHeight * 5 + 110))); make.height.equalTo(@(buttonHeight)); }];

对最后一行单独处理
[_buttonZero mas_makeConstraints:^(MASConstraintMaker *make) {make.left.equalTo(@15); make.top.equalTo(@(selfHeight - (buttonHeight + 50))); make.width.equalTo(@(buttonWidth * 2 + 15)); make.height.equalTo(@(buttonHeight)); }]; [_buttonZero.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {make.left.equalTo(_buttonOne.titleLabel); }]; //使0的数字对齐

计算部分:
+ (Result)CalculateFor:(char*) formula andLen: (long) length {Result result = {0, 0.0f}; int numberOfDots = 0; int index; int digitsNum = 0; float digits[CALCULATE_MAX_DIGITS]; memset(digits, 0, sizeof(digits)); int optNum = 0; char operator[CALCULATE_MAX_OPERATOR]; memset(operator, 0, sizeof(operator)); int digitNum = 0; char digit[CALCULATE_MAX_DIGIT]; memset(digit, 0, sizeof(digit)); char *p = formula; while (length--) {switch (*p) {case '+':case '-':case '*':case '/':numberOfDots = 0; if (0 == digitNum && '-' == *p) {digit[digitNum++] = *p; } else {if (-1 == digitNum) {//刚计算过括号,符号前可以没有数字读入} else if (0 == digitNum || CALCULATE_MAX_DIGITS == digitsNum - 1) {result.error = CALCULATE_ERR; return result; } else {digits[digitsNum++] = atof(digit); memset(digit, '\0', sizeof(digit)); }digitNum = 0; operator[optNum++] = *p; }break; case '(': {char *pointer_son; int ExistEnd = 0; pointer_son = ++p; while(length--) {if ('(' == *p) {ExistEnd--; } else if (')' == *p) {ExistEnd++; }if (1 == ExistEnd) {break; }p++; }Result result_son = [self CalculateFor:pointer_son andLen:p - pointer_son]; if (CALCULATE_ERR == result_son.error) {result.error = result_son.error; return result; }digits[digitsNum++] = result_son.value; memset(digit, 0, sizeof(digit)); digitNum = -1; break; }case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':case '.':digit[digitNum++] = *p; if (numberOfDots == 0 && *p == '.') {numberOfDots = 1; } else if (numberOfDots == 1 && *p == '.') {result.error = CALCULATE_ERR; return result; }break; default:result.error = CALCULATE_ERR; return result; }if (0 == length && 0 < digitNum) {digits[digitsNum++] = atof(digit); memset(digit, 0, sizeof(digit)); digitNum = 0; }p ++; }if (digitsNum != optNum + 1) {result.error = CALCULATE_ERR; return result; }for (index = 0; index < optNum; index ++) {if ('*' == operator[index]) {digits[index + 1] = digits[index] * digits[index + 1]; digits[index] = 0; operator[index] = '?'; } else if ('/' == operator[index]) {if (digits[index + 1] == 0) {result.error = CALCULATE_ERR; return result; }digits[index + 1] = digits[index] / digits[index + 1]; digits[index] = 0; operator[index] = '?'; }}for (index = 0; index < optNum; index ++) {if ('?' == operator[index]) {if (0 == index) {operator[index] = '+'; } else {operator[index] = operator[index - 1]; }}}result.value = https://www.it610.com/article/digits[0]; for (index = 0; index < optNum; index ++) {if ('+' == operator[index]) {result.value += digits[index + 1]; } else if ('-' == operator[index]) {result.value -= digits[index + 1]; }}return result; }

【iOS开发实现计算器功能】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读