iPhone UI开发建议

从CAD到完美网格:HyperMesh几何清理全流程指南(2023最新版) 本文详细介绍了2023最新版HyperMesh在几何清理和网格划分方面的全流程操作指南。从CAD导入、几何修复到中面提取和网格生成,系统性地分享了实战验证的解决方案,帮助工程师高效处理复杂几何体,提升有限元模型质量。特别针对汽车和航空航天领域的常见问题,提供了智能化工具和优化技巧。 阅读详情

结合个人iPhone开发经历,提几点iPhone UI开发方面的建议。

 

建议1 尽量使用系统控件

     系统控件可以使得用户容易上手,但在iPhone开发中还有很多人习惯使用checkbox而不是UISwitch,使用combobox而不是使用UIPickerView。究其原因可能有两点:一是从其他Windows或者Android系统转到iPhone开发的残留,二是因为跨平台开发中为了减少设计和资源的工作而趋同设计。不过这样的设计往往造成自定义控件的开发投入,质量上也往往无法和系统控件相媲美。

 

建议2 合理抽象

   UI代码是很容易重复写的代码,很多时候就会造成代码效率的错局,让人有一种高效工作的错觉。其实很多代码是完全重复或者结构重复的,通过适当的抽象就可以进行消除和避免。比如在一个应用中,不同地方所需要的内嵌网页浏览器,这些地方往往都有一些共通的行为。比如加载的时候会显示加载进度并在状态栏显示网络状态图标,在加载完毕后隐藏进度和网络状态显示。如果单独在不同Controller中实现不仅不合理,而且容易造成大量代码重复以至于后来的维护噩梦。通过合理抽象,抽取一个基类后就可以封装这块的行为,实现相同逻辑代码的复用。

 alt text

 

建议3 优先使用组合

   UI中很多部分应该像积木,可以随意拼接组合。比如下图的用户信息显示部分可以由诸如UIImageView,UILabel等几个基本控件拼接而成,而这种显示在一个项目中会通常在多个界面中显示。面对这种的问题,参考建议2后可能就会想着抽象一个基类用来处理用户信息显示相关的逻辑和界面。所有有这需求的界面都可以继承自这个基类。这种抽象是解决了逻辑和界面重复实现的问题,但另一方面却引入了高耦合的继承。如果有些界面因为功能原因更会迫切继承一个其他基类,比如建议2中提到的处理网页加载的基类,由于Objective-C无法支持多重继承,从而被迫进行部分代码的copy&paste。所以在抽象的时候就应该格外珍惜基类的抽象的使用,不断利用Liskov原则进行继承合理性的检查和确认,同时把握“优先使用组合”的原则,通过基本控件的组合制作一些应用相关的组合,比如显示用户信息的,这样其他需要的节目就可以利用组合来复用这部分代码,从而避免继承,也其他更合理的继承保留可能。

 

 

建议4 UI和逻辑的分开

   这是很重要的一点,iPhone SDK给开发者提供了一个很好的基础来实现UI和逻辑的分开,所以实现的过程中务必遵照一些Apple的指导文档,而避免在UI中揉合着大量逻辑代码。要真这样的话不仅对不起Apple工程师在这方面的努力,更是给自己增加无尽的麻烦。

 

建议5 充分利用IB。

   曾经遇到这样的一个同事,九几年开始做MFC开始,最初也很希望使用STL库,不过在一次项目中发现了STL的内存泄露问题后就开发摒弃STL,以至到现在也不允许自己和属下在项目开发中使用STL。这真是一朝被蛇咬,十年怕井绳。在使用Xcode进行iPhone开发的过程中同样有这样的一些人。他们很早就开始接触和使用IB,但使用过程中发现很多IB的问题和不便,甚至有一些在实际项目中无法忍受,以至于到现在还一直抵触IB。目前,虽不敢说IB已经很完美,但是它对开发效率的提高所起的作用是毋庸置疑的。

 

建议6 不要低估了Apple工程师

   在开发的过程中经常会发现一些比较奇怪的问题,这时候通常就怀疑是不是Apple的bug,于是乎就开始寻找一些特殊处理进行规避并逐渐认定这就是Apple的问题。一旦有过这样的经历后,以后遇到类似的问题就会首选自己发现的那些特殊处理,而逐渐偏离了开发的正道。举个自己亲身经历的例子,一次为了改变UITableViewCell的颜色,开始时直接改变cell的backgroundColor,但发现搞不定,一番搜索后发现改变cell的ContenView的backgroundColor就OK了,不过一旦显示accessoryView就露馅了。于是乎干的彻底点,直接自定义一个UITableViewCell,并用一个UIImageView做背景,现在终于可以“为所欲为”了。不过回想下,怎么简单的一个问题如此大动干戈,真是不值当,所以心里会暗暗骂下Apple的工程师,怎么就不让cell的backgroundColor起作用呢?这么明显的bug!以至于以后的一段时间我就习惯用那“土办法”,而且是屡试不爽。突然有天在stackoverflow上看到一个类似问题的讨论,原来这种问题可以通过重写-tableView:willDisplayCell:forRowAtIndexPath:的委托方法实现。想想之前骂过的话以及走过的弯路,只能感叹自己掌握不深入。有了这样的经历后在遇到类似的问题我会先怀疑使用合理,而不是轻易下结论。

 

以上

NL2SQL进阶系列(3):Data-Copilot、Chat2DB、Vanna Text2SQL优化框架开源应用实践详解[Text2SQL] 阅读详情

相关推荐

基于MicroBlaze与LWIP的FPGA以太网通信实战指南

本文详细介绍了基于MicroBlaze软核处理器与LWIP协议栈的FPGA以太网通信实现方案。通过Vivado工具链配置硬件设计,结合LWIP轻量级TCP/IP协议栈优化,提供高效、低成本的嵌入式网络解决方案,适用于工业控制等场景。文章包含硬件设计、软件配置及常见问题排查等实战指南。

weixin_29290863的博客 534

iPhone UI开发的一些注意事项

iPhone UI开发的一些注意事项

骑着蜗牛找马儿 888

多机器人协同:水下机器人集群的分布式控制与ROS仿真实践

本文探讨了多自主水下机器人(AUV)集群的分布式控制方法,重点分析了欠驱动6自由度AUV模型的反馈线性化技术。通过ROS/Gazebo仿真平台,详细介绍了系统架构设计、通信延迟补偿策略及环境扰动应对方案,为水下协同作业提供实用参考。

jupi8的博客 688

Iphone中的UIView开发

曾经有人这么说过,在iphone里你看到的,摸到的,都是UIView,所以UIView在iphone开发里具有非常重要的作用。那么UIView我们到底知道多少呢。请看看下面的问题, 如果这些你都知道,那么本文章的内容就请绕道,如果你还不太清楚,我想看了下面的内容,你就明白了。 1。bounds和frame分别表示什么? 2。ContentMode里UIViewContentModeScale

amber_tear的专栏 1495

UE4初学笔记_02_编辑器界面

不同版本可能不一样,这里是4.25 UE4编辑器主界面(也称为关卡编辑器)主要用于构建世界场景和关卡以及放置资源。 1.菜单栏 2.关卡编辑器(Level Editor)工具栏 3.“模式”(Modes)面板 4.“内容浏览器”(Content Browser)面板 5.“视口”(Viewport)面板 6.“世界大纲视图”(World Outliner)面板 7.“细节”(Details)面板 1.菜单栏 菜单栏包含“文件”(File) 、“编辑”(Edit) 、“窗口”(Win.

来自火星的猫 3093

NRF52832串口通信避坑指南:从SDK配置到硬件流控(RTS/CTS)实战

本文详细介绍了NRF52832串口通信的实战指南,从SDK配置到硬件流控(RTS/CTS)的完整实现。通过分析UARTE模块特性、解决SDK版本差异问题、正确配置硬件引脚以及实现稳定通信的代码示例,帮助开发者避开常见陷阱,确保高效可靠的串口通信。特别强调了硬件流控在高速通信中的重要性及其实践方法。

weixin_33739646的博客 283

(转) iPhone UI 开发的几点建议

(转) iPhone UI 开发的几点建议 2011年12月17日   原文地址:http://blog.youkuaiyun.com/lbj05/archive/2011/04/01/6295778.aspx   =====================================   结合个人iPhone开发经历,提几点iPhone UI开发方面的建议。   建议1 尽量使用系统控件...

qoz790qo 121

波动性GARCH模型与波动率预测(代码+结果分析)

本文介绍的ARCH、GARCH模型可以刻画出随时间变化的条件异方差。

celiaweiwei的博客 2万+

iPhone开发经典语录集锦

转自:http://blog.youkuaiyun.com/dongfengsun/article/details/4870650 前言:iPhone是个极具艺术性的平台,相信大家在开发过程中一定有很多感触,希望能写出来一起交流,所以开了这个帖子,以后还会维护。   如果大家和我一样有感触的话,可以跟在帖子下面,最好简短并附上中英文:)   1:如果无法保证子类行

icthuanglong85的专栏 286

YOLOv11模型改进-模块-引入特征细化模块FRFN 解决小目标、遮挡等问题

FRFN 是一种专门设计的深度学习结构,旨在提高图像处理任务中的特征表示能力。它的核心设计理念是通过逐层细化和优化特征图,从而实现更高的分类和检测精度。1. 特征提取层:通过卷积层提取初始特征,并进行批量归一化以增强稳定性。2. 特征细化模块:在每个模块中,当前层特征图与前一层特征图进行融合,以强化特征表示。3. 跳跃连接:通过跳跃连接保留多尺度信息,帮助缓解深层网络中的信息丢失。4. 非线性激活:使用激活函数(如ReLU)增加模型的非线性能力。5. 输出层。

qq_64693987的博客 3337

MATLAB算法实战应用案例精讲-【数模应用】校准曲线(附MATLAB、python和R语言代码实现)

模型校准曲线(Calibration Curve),也称为可靠性曲线(Reliability Curve)或概率校准曲线(Probability Calibration Curve),是一种评估分类模型输出概率准确性的图形工具。它可以帮助我们理解模型的预测概率是否与实际标签的分布一致。校准曲线通常包括以下步骤:计算模型预测概率:对于测试集中的每个样本,模型会输出一个概率值,表示样本属于正类的概率。将数据分桶:将这些概率值分成若干个等宽的桶(例如10个桶),每个桶中的样本具有相似的预测概率。

qq_36130719的博客 559

iphone ios 屏幕,statusbar,状态栏,标签栏尺寸,高度

NSLog(@"%lf %lf %lf",self.navigationController.navigationBar.frame.size.height,self.tabBarController.tabBar.frame.size.height,[[UIApplication sharedApplication] statusBarFrame].size.height);

小小Dream 591

Agent应用实践之二十九 - 设计模式:人机协同

本章讲解了一种比较常见的设计模式:人机协同。通过一些场景举例,同时使用AgentScope本身自带的能力实现的人机协同模式,最后通过源码分析了AgentScope中如何实现。通过了解人机协同模式对于实际工程使用也是非常有用的。

代码让AI扣 306

9步开发出一款iPhone 应用

在访问App Store的时候,用户喜欢安装和下载有吸引力的应用,但决定下载前用户只能通过应用截图来判断其吸引力和功能。如果现在你想自己设计一个应用,那你来对地方了,下面就是建立一个iPhone 应用的几个建议和应该避免的错误。 1. 找到你的技术优势 在开始设计任何流程图前,你得找出你擅长的技术。例如准备开发一款移动游戏应用,而你对设计界面不在行,就不要硬来。你应该建立一个你擅长

雷锋网 1824

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

iphone开发每日一练1【2011-08-31】

求助关于NSOutputStream write byteArray 急!如何根据iphone的旋转求出x,y,z轴的变化角度? 基于网络的iphone开发 请教模拟器 分辨率 设置问题~怎么设成640×960啊? 怎么根据key的值获取NSMutableDictiona

师以长技以制夷 637

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

[转]IPhone开发经验教训总结

<br />IPhone开发经验教训总结This entry was posted by Yong on 星期五, 3 九月, 2010 at<br /> 所有的UI操作,都要切换到主线程中进行.否则,会发生莫名其妙的错误.在主线程中,runloop默认是开启状态的。非主线程中,如果要用到runloop,必须手动开启runloop。关于runloop知识。对于常见的EXEC_BAD_ACCESS,EXC_BAD_INSTRUCTION,错误,一般都是因为访问已经被release的对象造成的。尤其是在一个线程

安迪·潘 的专栏 1031

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

iPhone sdk4 编程

繁體中文 English 用户名: 密码: 忘记密码? 登陆 注册 首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客 文档 问吧 交流 PHP函数 下载 全站搜索 标题 全文  热门搜索 域名注册 虚拟主机 - 我是站长网,站长好帮手网站征服者,建站好去处favi...

weixin_33858249的博客 89

iOS开发UI篇—iPad和iPhone开发的比较

现在在开发ipaid项目,总觉得UI布局如果还用iphone的方法实现就很麻烦,今天看到一篇文章,提供大家参考: http://www.cnblogs.com/wendingding/p/3918007.html 如果大家有什么建议,希望多多评论,我们一起学习;

sun_Winter的专栏 625

ios开发经典语录锦集

原文链接: iPhone开发经典语录集锦 前言:iPhone是个极具艺术性的平台,相信大家在开发过程中一定有很多感触,希望能写出来一起交流,所以开了这个帖子,以后还会维护。 如果大家和我一样有感触的话,可以跟在帖子下面,最好简短并附上中英文:) 1:如果无法保证子类行为的一致性,那么就用委托 If the subClass cann't keep with superC...

weixin_34261415的博客 74

ipad iphone开发_如何在iPhone或iPad上禁用键盘建议栏

ipad iphone开发Everybody knows about how smartphones auto-correct your text in funny and unintended ways, but in the latest versions, iOS added a predictive wordsuggestions bar that helps to guess what...

culiuman3228的博客 573
上一篇: 软件管理中的坏味道
下一篇: iPhone How-to:给UIView拍照
lbj05
博客等级 码龄19年 20粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值