- 浏览: 1843143 次
- 性别:
- 来自: 深圳
最新评论
-
levin_china:
勾选了,还是找不到
用spring annotation声明的bean,当打包在jar中时,无法被扫描到 -
GGGGeek:
我用的maven-3.5.0,还没有遇到这种情况,使用jar ...
用spring annotation声明的bean,当打包在jar中时,无法被扫描到 -
GGGGeek:
受益匪浅,从组织项目结构,到技术细节,讲的很到位,只是博主不再 ...
一个多maven项目聚合的实例 -
Aaron-Joe-William:
<?xml version="1.0" ...
hibernate逆向工程 -
li272355201:
http://archive.apache.org/dist/ ...
tomcat源码阅读(一)——环境搭建
文章列表
曾经,iOS开发是不需要考虑屏幕适配问题的,因为只有一种屏幕尺寸。而现在已经有了4种屏幕,4,5,6,6P,因此屏幕适配也成了iOS开发中必须考虑的问题。并且,这4种屏幕的宽高比全部都不一样,所以简单的按比例缩放并不能解决问题。我们最近做的一个APP也处理了屏幕适配,本文简单总结一下
根据屏幕类型判断
我不知道有没有更好的办法,我们的做法是根据设备类型,写一些if...else,或者switch语句
判断机型可以使用screen的height(不能使用width,因为4和5的width是一样的,都是320),也可以使用API里的宏,都差不多。我个人感觉,if...else似乎是不可避免的, ...
- 2015-05-18 19:27
- 浏览 34698
- 评论(0)
直接通过layer的cornerRadius属性,设置圆角,发现在iOS8下显示错误(故意设置了红色边框,看得清楚)
虽然边框是圆角,但是UILabel本身还是直角
在iOS8下,需要这样写:
cancelLabel.layer.cornerRadius = 5.f;
cancelLabel.layer.borderColor = [UIColor whiteColor].CGColor;// 设置成UILabel的背景色
[cancelLabel.layer setMasksToBounds:YES];// 关键
效果:
- 2015-05-18 17:27
- 浏览 1545
- 评论(0)
执行以下代码的时候:
[self dismissViewControllerAnimated:NO completion:nil];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];// 用户选择的图片
CropImageViewController *cropViewController = [[CropImageViewController alloc] initWithImage:image andImageScale:1.25];
cropViewController.delegate ...
- 2015-05-08 16:44
- 浏览 1750
- 评论(0)
APP的一个页面用到了自定义的UITableViewCell,由于iOS框架的cell重用机制,遇到了一个BUG,总结一下
现象
自定义的UITableViewCell里有一个UIButton,点击这个button以后,需要改变cell的样式,包括换UILabel字体颜色,禁用该UIButton等。结果发现,点击按钮之后,不仅当前cell的字体颜色变了,还有另外几个cell的字体颜色也跟着变,而且是随机的
原因
后来想到,应该是由于iOS的cell重用机制造成的,原来的代码类似:
-(void) onButtonPressed
{
label.textColor = [UIC ...
- 2015-05-02 15:45
- 浏览 10510
- 评论(0)
虽然iOS8引进了UIActionController,但是由于目前还需要兼容iOS7版本,所以还不能完全放弃UIActionSheet
我们有一个界面用到了自定义的模态对话框。当用户点击某个按钮时,会弹出ActionSheet,然后选择ActionSheet的一项,会弹出一个模态的对话框。基本的思路是用一个透明的view直接add到UIWindow上,类似:
-(void) show
{
[[UIApplication sharedApplication].keyWindow addSubview:self];
timer = [NSTimer scheduledTime ...
- 2015-05-01 17:16
- 浏览 939
- 评论(0)
从2013年12月入坑至今,差不多做了一年半iOS开发,回顾一下学习的过程
学习iOS开发的几个阶段
首先我觉得,学习一门语言,需要5个步骤:
1、了解语言本身。比如首先需要了解objective-c的特性,以及各种相关的东西。从基础的 ...
- 2015-04-26 02:06
- 浏览 1449
- 评论(1)
今天有事回老家,在动车上把EOC囫囵吞枣看完了,晚上回来摘要几条觉得比较重要的,备忘
1、在可能的时候,尽量多用字面量
2、尽可能为对象实现description方法
3、私有方法的前缀,不用_,会跟苹果冲突。那我考虑用__
4、如果一个类里的方法太多,考虑用category分类
5、category也要加前缀,比如sd_setImageWithUrl。总之因为oc缺少完备的namespace方案,所以在可能冲突的地方,都要考虑加前缀
6、以弱引用避免retain cycle
7、ARC无法处理CoreFoundation框架的对象回收,需要自己调用CFRelease方法
8、定 ...
- 2015-04-20 00:42
- 浏览 589
- 评论(0)
hybrid还是native
使用hybrid开发,有几个好处:
1、web程序员参与开发
2、跨平台
3、快速更新
缺点主要是UI体验比不上原生,比如滚动、弹性、拖拽、动画等,web的效果现在还是比不上native。所以实际项目中,选择哪种开发方式,取决于具体的需求
比如说,我们做的一个店务管理的APP,逻辑非常复杂,但是对UI的要求比较低,这就比较适合使用hybrid来做。因为对UI的要求不高,但是业务逻辑如果需要在多个平台实现,开发和测试的工作量都要加倍,另外APP本身是to business的应用,如果有BUG就需要快速更新
而另一个APP,是面向C端用户的,那么对UI的要 ...
- 2015-04-19 23:30
- 浏览 1110
- 评论(0)
最近做的APP,需要分享功能,于是试了一下友盟的社会化组件。总的感觉还不错,虽然没有比直接集成官方SDK简便多少,但是后台统计的功能不错,所以最后还是用了。官网的文档说明已经挺详细了,不过章节组织得有点乱,本文总结一下
获取友盟app key
首先去友盟注册一个app key,然后下载它的SDK。这里要注意的是,SDK分为IDFA版和非IDFA版,前者需要设置一个默认的广告页,否则有可能被苹果拒绝上架,我觉得有点风险,所以最后选的是非IDFA的版本。由于目前IDFA是唯一标识设备的最准确手段,所以这个版本有可能在识别新用户时不如IDFA版准确,不过我觉得可以接受
然后友盟提供了多套组件,除 ...
- 2015-04-10 02:16
- 浏览 8665
- 评论(0)
这几天写一段数据迁移脚本,各种bug和闪退,定位以后发现大部分都是NSDictionary取key引发的错误
判断key存在
第一个场景是判断key是否存在,NSDictionary并没有类似containsKey之类的API,网上找到的判断方法,大部分是
if([dict objectForKey:@"xxx"]){
// key存在
}
如果一个@{}不包含某个key,那么调用objectForKey会返回nil,就走不进if的分支
判断key对应的value非空
但是这里的NSDictionary是用FMDB返回的结果,可能key是存在的,但是对 ...
- 2015-03-22 17:12
- 浏览 5827
- 评论(0)
我们的一个方案是基于文件做多端数据同步,见另外一篇博客:基于文件的数据同步方案
其中的核心是如何正确、高效地同步文件,一开始我们使用了国产的libsync库:libsync
基本的流程是:有文件A和B,现在想把文件A“变成” ...
- 2015-03-22 16:41
- 浏览 1250
- 评论(0)
为了发布苹果企业版ipa,我们在godaddy上申请了SSL证书。部署之后发现,在PC/Mac平台的各浏览器上都可以正常通过https协议访问,但是在iPad的Safari上就会报错
在这个地址:SSL checker,校验后发现,提示以下错误信息:
The certificate is not trusted in all web browsers. You may need to install an Intermediate/chain certificate to link it to a trusted root certificate.
看样子是少部署了交叉证书的原 ...
- 2015-03-22 16:18
- 浏览 1541
- 评论(0)
这几天把一段逻辑从服务端搬到客户端,基本上就是把js翻译成oc。直接对比,明显感到oc太烂了(仅针对语言本身,iOS应用框架还凑合)
比如下面这行JS代码:
var monthtag = bill_year + "-" + bill_month;
写成OC以后,非常晦涩。当然用NSMutableString能有个append方法,但是恶心程度也差不多:
NSString *monthTag = [NSString stringWithFormat:@"%@-%@", [NSString stringWithFormat:@"%d&q ...
- 2015-03-06 01:11
- 浏览 2218
- 评论(0)
有一类系统,基本上所有操作都要求在线。在客户端产生的数据,直接提交到服务器,本地不存数据,或者仅保存少量缓存数据。这类应用有一个优势,就是客户端和服务器的数据始终是同步的,罕有两端不一致的情况。但是也有缺点,即对网络条件要求高,在网络条件不好的时候,用户操作需要等待,甚至无法正常使用
我们的一个APP,与上述系统不同,是支持离线操作的。数据在本地和服务器各有一份,然后通过同步机制来保持一致。这样做的缺点是提升了系统的复杂性,因为如果设计有缺陷,就很容易发生两端数据不一致的情况;另外就是如果客户端长期离线,存在数据丢失的风险。当然好处也很明显,即操作不依赖网络,所以非常流畅。即使在无网络条件下, ...
- 2015-02-11 02:15
- 浏览 1338
- 评论(0)
有一个特性需要调用第三方库libsync,在node.js里可以用ffi来实现
首先稍微包装了一下,ffi也是支持异步调用的,但是API比较麻烦,包装以后调用起来会比较容易
var ffi = require("ffi");
var lib = ffi.Library('./libsync', {
'file_chunk': ['int', ['string', 'string', 'int']],
'file_delta': ['int', ['string', 'string', 'string', 'int']],
'file_sync' ...
- 2015-02-11 00:26
- 浏览 1638
- 评论(0)