重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

ios开发流程总结,ios开发流程总结怎么写

怎么开发app?

APP的入门门槛并不高,但要想做的好,却并不容易。

创新互联公司是专业的海棠网站建设公司,海棠接单;提供网站制作、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行海棠网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

首先需要了解用户需求,这是APP开发的第一步,你的用户是谁,他们需要什么,最需要什么。思考好需求以后,就可以按不同的路线走了。

如下图所示:

第二步,进行产品的规格设计。可以是简单的框线图。一旦确定了产品规格,在APP未正式上线之前,都不会再改动了。除非下定决定推翻重来。

如下图所示:

第三部,进行产品的视觉设计,需要使用Photoshop、ai、FW等软件设计,现在一般都是平面化的设计,这种设计的好处就是用户对待平面化的审美比较统一,很少会说:“不好看”。

如下图所示:

第四步,进行产品构架,分为前端后后台,前端就是使用android\ios\等开发语言按照之前做好的产品规格进行开发,后台则是处理业务逻辑和为前端提供存储和查询的接口。

如下图所示:

第五步,测试。对APP的功能进行使用,测试是否存在明显的问题,如果有的话安排时间进行BUG修改。将APP上传至测试平台,测试他在上百款手机上的表现,并试图解决最严重的缺陷。

第六部,上线。在各大应用中心注册账户,上传APP资料,对外分发你的APP。

当然android的应用市场比较多了,苹果的只有一个AppStore。

做完这些,APP就开发完成了。随着使用的用户越来越多,根据用户反馈,对APP进行完善,还有很多工作要做。

一个APP从构思到开发、上线,要经历的过程还很长,要分析的问题也很多,这里也简单说一下吧,感兴趣可以了解一下:

构思APP产品,与每个人的经历、经验、智商、情商、人际网络不通,都不一样。所以也很难说谁对谁错,但有一点,就是要敢于尝试,我见过很多人,只知道想,却能拖了几年都不行动的。我想等到智能手机从市场上消失了,他可能还在构思。

其次,APP项目看似简单,但实际开发中的问题却不少,你需要一个很好的产品经理或者是项目经理,市场上有很多这种人才,但适合你的可能是百里挑一或千里挑一,如果你本人就是,那你就要做好跟技术人员的沟通,合理的安排他们的编码,让他们找到开发的乐趣。做项目管控是一门学问,简单的概括就是“执行力”。做好产品规格和产品开发计划,就能严格的按照计划完成,无论遇到什么问题,都可以跨越的能力。

第三,APP上线后,肯定会遇到一个问题,就是根本没人用你的APP。那么如何推广和营销,就成了那个阶段的问题。如果你是一个大牛,在社会上能够一呼百应,或者是含着金钥匙的,那可以跳过。如果是一个普通人,就建议从第一个用户开始。提供给你的用户,哪怕就一个人,最好的服务,你需要的是让你的用户成为你的广播,口碑相传。这样才有可能走的下去。

祝你早日成功。

iOS开发 UIView Animation总结

最近购入了某米的一台安卓机,使用了一段时间安卓系统后,发现iOS系统的动画效果还是很好的。好吧进入正题

UIView Animation 实际上是对 Core Animation(核心动画) 的封装.使用UIView动画十分简单

UIViewAnimationOptions 动画效果枚举

动画效果相关

时间函数曲线相关

转场动画相关

增加关键帧的方法

UIViewKeyframeAnimationOptions 的枚举值

关键帧动画栗子????

单个视图的过渡效果

从旧视图转到新视图的动画效果

fromView 会从父视图中移除,并将toView 添加到父视图中

iOS审核2.1、5.1、3.2被拒流程记录及解决方法总结

公司需要新上架的APP基本情况:

1.行业内使用的APP,是客户定制的产品。

2.App没有注册功能,由企业客户的超级管理员通过后台来创建管理员工账户。

总体来说经历了三轮被拒后成功上架。

第一轮, 新品上架被拒,苹果的邮件包含1.回答问题2.提供展示视频3.info.plist定位的描述不全。

苹果邮件内容:

解决方法:

这里我改了info.plist中的定位功能的描述,重新打包上传,选择新的构建版本,然后在备注里添加了展示视频的百度网盘链接及密码,然后重新提交审核。这里操作完后方案解决中心邮件回复的发送按钮消失,于是我没有回答2.1的问题。这里可能是因为选择了新的构建版本重新提交了审核,所以上个版本的问题就结束了。

第二轮 ,苹果给了新的邮件,元数据被拒,邮件回复即可,先是给了2.1(和第一轮一样) 然后又给了3.2,判定为内部app建议用apple企业账号进行分发,最后我给苹果的回复说app还没完善后续会加上注册功能,目前网页端可以注册(怕说平台超级管理员创建账户又被苹果判断为内部而拒审),结果苹果回复让提供网页注册链接。。。然后就没有然后了。

以下是与苹果的邮件来往回复内容:

这次感觉问题就坏在2.1时的回复,还怕人家没法理解中文,还用了他问题中的用户类型描述的英文原文,感觉他列举的常见用户类型前两个都不能写,如果是这两个中的一个就判定你是内部应用不能在App Store上架。

解决办法:

因为3.2后面的对话也进行不下去了,于是在APP Store Connect里删除APP,换一个BundleID重新上架,保险起见我还更换了APP名称和图标。然后等待审核团队回复。这里参考了 iOS审核被拒Guideline 3.2 - Business、1.2 - Safety

删除APP的方法:

点击左侧综合-App信息,页面最下方有移除App

第三轮 ,第二次新品上架,审核团队给了个2.1。

解决方法:

纯邮件回复即可,这次要注意避雷,千万不要说什么定制、指定客户等敏感词汇。这次我小心回复,说明了后台管理账户的情况,并截图了后台账户管理的界面,截图中标记了提供给审核团队的测试账户,以及标记了添加账户按钮。这次很顺利一次通过直接上架了。

以下为与苹果邮件来往回复内容:

解决流程总结:

第一轮 没有邮件回复2.1问题,修改了2.1指出的plist定位描述问题,5.1提供一个app操作录屏视频上传到百度网盘,在提审界面的备注中留百度网盘链接密码即可。

第二轮 对于2.1的app面向用户类型以及获取账户方式的回答错误,导致后面出现3.2,然后对于3.2的回复继续出错,才采取了删除app换bundleID上架的解决方法。

第三轮中对于2.1的回答才是正确的。

拒审问题总结:

1.2.1的问题如实回答,但切记如果你还想上架到App Store,就要避免定制、指定用户等词汇引导苹果认为你的app为内部使用。

2.关于用户如何获得账户,如果app没有注册功能,一定要证明你的app是可以通过其它途径创建账户的,并提供充分证明。(参考第三轮中的回复)

3.如果遇到3.2,也不必慌,证明自己的app是提供给普通用户的,无法通过分发来安装,如果你也是没有注册功能,解决方法同上2,如果还是被拒就只能删除app换个BundleID重新上架了。(参考第二轮中的解决方法)

4.关于要求提供展示视频,网上有说视频要上传到油管,我试了放到百度网盘也是可以通过的,关于视频内容,尽可能详尽的展示app的主要功能,一般要求你提供视频就说明你的app比较复杂或者涉及的不是通用领域,审核人员不知道如何下手,让审核人员免去费力理解你的app如何使用,以这个为目标自己斟酌如何录制操作视频。

iOS开发中遇到的小问题-----总结

1、统一收键盘的方法

[[[UIApplication sharedApplication] keyWindow] endEditing:YES];

2、提示框

BBAlertView *alert = [[BBAlertView alloc] initWithStyle:BBAlertViewStyleDefault

Title:@"删除订单"

message:@"是否删除订单,"

customView:nil

delegate:self

cancelButtonTitle:L(@"取消")

otherButtonTitles:L(@"确认")];

[alert setCancelBlock:^{

}];

[alert setConfirmBlock:^{

[self orderDidRemovePressDown:tempDic Index:index.section];

}];

[alert show];

3、图片的自适应功能

self.brandImage.contentMode = UIViewContentModeScaleAspectFit;

4、cocoaPods清除缓存问题

$ sudo rm -fr ~/.cocoapods/repos/master

$ pod setup

5、设置显示键盘的样式

textView.keyboardType =UIKeyboardTypeDefault;

//设置键盘右下角为完成(中文输入法下)

textView.returnKeyType=UIReturnKeyDone;

6、输出当前时间

NSDateFormatter * dateFormatter=[[NSDateFormatter alloc]init];

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];

NSLog(@"当前毫秒时间1==%@",[dateFormatter stringFromDate:[NSDate date]]);

7、显示两秒然后消失

UILabel * lab=[[UILabel alloc]initWithFrame:CGRectMake(60,Main_Screen_Height-64-49-60, Main_Screen_Width-120, 50)];

lab.backgroundColor=[UIColor grayColor];

ViewRadius(lab, 20);

lab.textAlignment=NSTextAlignmentCenter;

lab.text=@"请先进行实名制验证";

[self.view addSubview:lab];

[UILabel animateWithDuration:2 animations:^{

lab.alpha=0;

}completion:^(BOOL finished) {

[lab removeFromSuperview];

}];

8、设置placeholder属性的大小和颜色

[_phoneFie setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];

[_phoneFie setValue:[UIFont boldSystemFontOfSize:15] forKeyPath:@"_placeholderLabel.font"];

_phoneFie.returnKeyType=UIReturnKeyDone;

9、设置cell的交互完全不可以使用

//[cellTwo setUserInteractionEnabled:NO];

//设置cell不可以点击,但是上面的子控件可以交互

cellTwo.selectionStyle=UITableViewCellSelectionStyleNone;

10、将textField的placeholder 属性的字体向右边移动5

_field.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10*Width_375, _field.frame.size.height)];

_field.leftViewMode = UITextFieldViewModeAlways;

11、开新线程使按钮上的时间变化

-(void)startTime{

__block int timeout=60; //倒计时时间

UIButton * btn=(UIButton *)[self.view viewWithTag:1000];

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);

dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行

dispatch_source_set_event_handler(_timer, ^{

if(timeout=0){

dispatch_source_cancel(_timer);

dispatch_async(dispatch_get_main_queue(), ^{

[btn setTitle:@"发送验证码" forState:UIControlStateNormal];

btn.enabled = YES;

});

}else{

//  int minutes = timeout / 60;

int miao = timeout % 60;

if (miao==0) {

miao = 60;

}

NSString *strTime = [NSString stringWithFormat:@"%.2d", miao];

dispatch_async(dispatch_get_main_queue(), ^{

[btn setTitle:[NSString stringWithFormat:@"剩余%@秒",strTime] forState:UIControlStateNormal];

btn.enabled = NO;

});

timeout--;

}

});

dispatch_resume(_timer);

}

12、隐藏TableView 中多余的行

UIView * view=[[UIView alloc]initWithFrame:CGRectZero];

[_tabelView setTableFooterView:view];

13、UIView添加背景图片

UIImage * image=[UIImage imageNamed:@"friend750"];

headSeV.layer.contents=(id)image.CGImage;

14、UITableView取消选中状态

[tableView deselectRowAtIndexPath:indexPath animated:YES];// 取消选中

15、带属性的字符串

NSFontAttributeName  字体

NSParagraphStyleAttributeName  段落格式

NSForegroundColorAttributeName  字体颜色

NSBackgroundColorAttributeName  背景颜色

NSStrikethroughStyleAttributeName 删除线格式

NSUnderlineStyleAttributeName      下划线格式

NSStrokeColorAttributeName        删除线颜色

NSStrokeWidthAttributeName 删除线宽度

NSShadowAttributeName  阴影

1.  使用实例

UILabel *testLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 320, 30)];

testLabel.backgroundColor = [UIColor lightGrayColor];

testLabel.textAlignment = NSTextAlignmentCenter;

NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:@"今天天气不错呀"];

[AttributedStr addAttribute:NSFontAttributeName

value:[UIFont systemFontOfSize:16.0]

range:NSMakeRange(2, 2)];

[AttributedStr addAttribute:NSForegroundColorAttributeName

value:[UIColor redColor]

range:NSMakeRange(2, 2)];

testLabel.attributedText = AttributedStr;

[self.view addSubview:testLabel];

16、加大按钮的点击范围

把UIButton的frame 设置的大一些,然后给UIButton设置一个小些的图片

[tmpBtn setImageEdgeInsets:UIEdgeInsetsMake(5, 5, 5, 5)];

// 注意这里不能用setBackgroundImage

[tmpBtn setImage:[UIImage imageNamed:@"testBtnImage"] forState:UIControlStateNormal];

17、//避免self的强引用

__weak ViewController *weakSelf = self;

18、//类别的创建

command +n ——Objective-C File———(File Type  选择是类别还是扩展)———(Class  选择为哪个控件写类别)

19、修改UITableview 滚动条颜色的方法

self.tableView.indicatorStyle=UIScrollViewIndicatorStyleWhite;

20、利用UIWebView显示pdf文件

webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];

[webView setDelegate:self];

[webView setScalesPageToFit:YES];

[webViewsetAutoresizingMask:UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleHeight];

[webView setAllowsInlineMediaPlayback:YES];

[self.view addSubview:webView];

NSString *pdfPath = [[NSBundle mainBundle]pathForResource:@"ojc" ofType:@"pdf"];

NSURL *url = [NSURLfileURLWithPath:pdfPath];

NSURLRequest *request = [NSURLRequestrequestWithURL:url

cachePolicy:NSURLRequestUseProtocolCachePolicy

timeoutInterval:5];

[webView loadRequest:request];

21、将plist文件中的数据赋给数组

NSString *thePath = [[NSBundle mainBundle]pathForResource:@"States" ofType:@"plist"];

NSArray *array = [NSArrayarrayWithContentsOfFile:thePath];

22、隐藏状态栏

[[UIApplication shareApplication]setStatusBarHidden: YES animated:NO];

23、给navigation  Bar  设置title颜色

UIColor *whiteColor = [UIColor whiteColor];

NSDictionary *dic = [NSDictionary dictionaryWithObject:whiteColor forKey:NSForegroundColorAttributeName];

[self.navigationController.navigationBar setTitleTextAttributes:dic];

24、使用AirDrop 进行分享

NSArray *array = @[@"test1", @"test2"];

UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:array applicationActivities:nil];

[self presentViewController:activityVC animated:YES

completion:^{

NSLog(@"Air");

}];

25、把tableview里面Cell的小对勾的颜色改成别的颜色

_mTableView.tintColor = [UIColor redColor];

26、UITableView去掉分割线

_tableView.separatorStyle = NO;

27、正则判断手机号码地址格式

- (BOOL)isMobileNumber:(NSString *)mobileNum {

//    电信号段:133/153/180/181/189/177

//    联通号段:130/131/132/155/156/185/186/145/176

//    移动号段:134/135/136/137/138/139/150/151/152/157/158/159/182/183/184/187/188/147/178

//    虚拟运营商:170

NSString *MOBILE = @"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[06-8])\\d{8}$";

NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];

return [regextestmobile evaluateWithObject:mobileNum];

}

28、控制交易密码位数

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

if (textField.text.length =6){

[MBProgressHUD showMessage:@"密码为6位" afterDelay:1.8];

return NO;

}

return YES;

}

29、判断是不是空

if ([real_name isKindOfClass:[NSNull class]] ) {

return NO;}

30、点击号码拨打电话

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://400966220"]];

31、控制UITabbar的选择哪一个

[self.tabBarController setSelectedIndex:1];

32、获取当前App的版本号

NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];

CFShow(infoDictionary);

// app名称

NSString *app_Name = [infoDictionary objectForKey:@"CFBundleDisplayName"];

// app版本

NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];

// app build版本

NSString *app_build = [infoDictionary objectForKey:@"CFBundleVersion"];

33、苹果app权限NSPhotoLibraryUsageDescriptionApp需要您的同意,才能访问相册NSCameraUsageDescriptionApp需要您的同意,才能访问相机NSMicrophoneUsageDescriptionApp需要您的同意,才能访问麦克风NSLocationUsageDescriptionApp需要您的同意,才能访问位置NSLocationWhenInUseUsageDescriptionApp需要您的同意,才能在使用期间访问位置NSLocationAlwaysUsageDescriptionApp需要您的同意,才能始终访问位置NSCalendarsUsageDescriptionApp需要您的同意,才能访问日历NSRemindersUsageDescriptionApp需要您的同意,才能访问提醒事项NSMotionUsageDescriptionApp需要您的同意,才能访问运动与健身NSHealthUpdateUsageDescriptionApp需要您的同意,才能访问健康更新NSHealthShareUsageDescriptionApp需要您的同意,才能访问健康分享NSBluetoothPeripheralUsageDescriptionApp需要您的同意,才能访问蓝牙NSAppleMusicUsageDescriptionApp需要您的同意,才能访问媒体资料库

34、控件设置边框

_describText.layer.borderColor = [[UIColor colorWithRed:215.0 / 255.0 green:215.0 / 255.0 blue:215.0 / 255.0 alpha:1] CGColor];

_describText.layer.borderWidth = 1.0;

_describText.layer.cornerRadius = 4.0;

_describText.clipsToBounds = YES;

35、//隐藏电池条的方法

-(BOOL)prefersStatusBarHidden{

return YES;

}

36、延时操作

[NSThread sleepForTimeInterval:2];

方法二:

[self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.5];

37、系统风火轮:

[UIApplication sharedApplication].networkActivityIndicatorVisible = NO; //隐藏

38、//didSelectRowAtIndexPath:方法里面找到当前的Cell

AssessMentCell * cell = [tableView cellForRowAtIndexPath:indexPath];

39、navigation上返回按钮的颜色以及返回按钮后面文字去掉

//返回按钮后边文字去掉

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)

forBarMetrics:UIBarMetricsDefault];

//设置左上角返回按钮的颜色

self.navigationController.navigationBar.tintColor = UIColorFromRGB(0x666666);

40、lineBreakMode //设置文字过长时的显示格式

label.lineBreakMode = NSLineBreakByCharWrapping;以字符为显示单位显

示,后面部分省略不显示。

label.lineBreakMode = NSLineBreakByClipping;剪切与文本宽度相同的内

容长度,后半部分被删除。

label.lineBreakMode = NSLineBreakByTruncatingHead;前面部分文字

以……方式省略,显示尾部文字内容。

label.lineBreakMode = NSLineBreakByTruncatingMiddle;中间的内容

以……方式省略,显示头尾的文字内容。

label.lineBreakMode = NSLineBreakByTruncatingTail;结尾部分的内容

以……方式省略,显示头的文字内容。

label.lineBreakMode = NSLineBreakByWordWrapping;以单词为显示单位显

示,后面部分省略不显示。


分享文章:ios开发流程总结,ios开发流程总结怎么写
链接分享:http://cqcxhl.cn/article/dsdpieo.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP