- 如何你的DispatcherServlet拦截 .do这样的URL,就不存在访问不到静态资源的问题。如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对.js,*.jpg的访问也就被拦截了。
目的:可以正常访问静态文件,不要找不到静态文件报404。
方案一:激活Tomcat的defaultServlet来处理静态文件1<servlet-mapping> 2 <servlet-name>default</servlet-name> 3 <url-pattern>*.jpg</url-pattern> 4</servlet-mapping> 5<servlet-mapping> 6 <servlet-name>default</servlet-name> 7 <url-pattern>*.js</url-pattern> 8</servlet-mapping> 9<servlet-mapping> 10 <servlet-name>default</servlet-name> 11 <url-pattern>*.css</url-pattern> 12</servlet-mapping>要配置多个,每种文件配置一个 Read Moreproperty大概是objc中唯一的元编程机制,用来快速地生成类的数据成员的get和set方法。本文谈谈我对property的一些使用心得。
1)retain,copy和assign:
retain的作用在于生成set方法时该数据成员(一定是objc对象)的引用计数+1,通常用于除NSString类型以外的objc对象。如1- (void)setMember:(Member *)member 2{ 3 [member_ release]; 4 member_ = [member retain]; 5}
一个常见的例外是delegate的set方法通常设为assign,这是为了避免循环引用造成的引用计数无法归0,然后内存泄漏——考虑一个view的delegate为该view所在controller的情况。
NSString类的对象的set方法设为copy,字符串对象需要深拷贝。 Read More我们在有多个 UIView 层叠时,比如一个按钮被一个 UIView 遮盖时,想要在点击最上层的 UIView 时能触发按钮的相应事件,我们该如何实现呢,初步可以想到几种办法:
1. 把按钮上层的所有 UIView 的 userInteractionEnabled 属性设置为 NO,要是 UIView 有自己的交互事件该如何办呢?而且这个 userInteractionEnabled 不能动态设置,等到点击后决定设置它的 NO 是没用的
2. UIView 接受到点击事件后主动去触发下面按钮的点击,这时的关题有三,按钮没有点击过程中的交换效果、多层 UIView 时不切实际,逐层下传吗、还有就是其他双击、三击或别的手势如何处理
我也一直被前面两种方式纠缠着,同时也让 UIPopoverController 的 NSArray *passthroughViews 属性提醒着,因为对于 UIPopoverController,设置到它的 passthoughViews 属性中的控件事件可以完全从 UIDimmingView 下透出来。但苦于不可能看到 UIPopoverController 的源码,还是后面一而再的 Google 终于发现了 UIView 的方法:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event; // recursively calls -pointInside:withEvent:. point is in the receiver's coordinate system Read More我们在使用 UILabel 或是 UITextView 时,如果文字出现了换行,目前我还不知道如何去控制行间距,固定的 Label 文字 可以折成两个 Label 上下显示,但是对应大段显示的段落要多行显示时该如何呢,多行单独控制就变得不现实了。
由于 UILabel 或 UITextView 并不提供对行间距 line-height 的设置,要达成所愿指定行间距的方法,我可以想到三种方式:
1. 自定义相应的控件,在控件内部方法中去做文章,未实践,可能是个好方法
2. 修改字体,由于默认行间距是由字体本身特性决定的,所以可以修改字体来满足有限的需求,不是很现实
3. 用 UIWebView 来代替 UITextView,这是本文的思想
先看个图片,看看在使用某些字体时失控的行间距是什么样的效果: Read MoreiOS 的控件,只看到 UIButton 可以设置 Padding/Insets,即按钮上文字或图片与按钮边界的间隙,对与 CSS 来说叫做 Padding,在 iOS 中叫做 Insets,UIButton 设置 Insets 相应的属性如下:
Configuring Edge Insets
contentEdgeInsets property
titleEdgeInsets property
imageEdgeInsets property
它们接受的属性类型是:UIEdgeInsets,由函数 UIEdgeInsetsMake ( CGFloat top, CGFloat left, CGFloat bottom, CGFloat right ); 构造出,分别表示其中的内容/标题/图片离各边的距离。
在 xib 中也有界面来对按钮的这三个 EdgeInsets 属性的设置,分别是按钮的 Edge 和 Inset 属性。
印像中,Swing 的许多组件都可设置 Insets 属性,可对于 iOS 的控件就没那么幸运了,比如我想设置 UILable 或 UITextField 中的文本离边界的间隙,无伦是在 xib 里还是直接代码的方式都无能为力,因为它们根据未开放相应的属性让你去控制。 Read More本站前段时间有几天时好时坏,经常一访问:http://unmi.cc 就出现:
This account has been suspended.
Either the domain has been overused, or the reseller ran out of resources.
这样的错误提示,我真的还担心是不是触动了大墙而被 Block 了呢,又不怎么像。从大约十天前起就彻底不挺了,今晚问了一下主机提供商的客服,才知道,原来是被爆了--超过月流量了。没理由呀,这个站点还没有这么知名到访问量骤然上升的,彻查啊,于是上图上真相: Read More默认情况下,我们向一个 View 中添加一个子 View 时,子 View 的越界部分也会显示出来,当然超过屏幕部分是显示不出来,因为无法在你手上显示内容了。看下面的图:
上图中,橙色的 View 是蓝色 View 的子 View。看左图,由它们的 Frame 设置,橙色的 View 部分超出的蓝色 View 的区域,默认情况下,蓝色 View 超出部分也会显示出来,除非在屏幕之外的部分。 Read More
iOS 中的 UIView 动画编程其实还是很简单的,像 CSS3 一样,在给定的时间内完成状态连续性的变化呈现。比如背景色,Frame 大小,位移、翻转,特明度等。
以前我使用的编程方式都是用下面那样的三段式处理:1[UIView beginAnimations:nil context: nil]; 2[UIView setAnimationDuration:1.0]; 3 4//要动画改变的属性 5self.view.alpha = 0.0; 6self.view.frame = CGRectMake(10, 10, 50, 50); 7 8[UIView commitAnimations];
那么被 beginAnimations 和 commitAnimations 框起来的代码就会让你产生动画效果,这种方式像是数据库中的事物编程一样。 Read More对于 Unix 族下的文本编辑器,VI 功能稍弱,Emacs 的能力是没得说,但学习曲线太陡峭了,于是簇拥到 TextMate 旗下。快捷键能让你大大的提 升使用的效率,它可以让你的手尽量少在键盘与鼠标之间飘来飘去。相比于 Windows 平台,Mac 更推崇使用快捷键来操作,搭配着大大的触摸板后,鼠标真的就有点多余了。
这里列出的所谓通用快捷键是不怎么涉及那些 Bundle 中的特定的快捷键而言的,还有些是系统通用的快捷方式也会提到
1. mate 命令:
mate . 以当前目录启动一个项目
mate a.txt b.txt *.csv afolder afolder/bfolder 指定文件、通配符的方式,或目录来启动一下项目Read More1command + option + L 显示行号 2ctrl + R 执行光标前或选择的 shell 命令,并把执行结果输出到当前位置 3ctrl + L 把当前行试图移动屏幕中央 4ESC 自动补全本篇是介绍来自于 HTML Bundle 的快捷键
1. 产生 HTML 注释 <!-- -->,用 command+/,这与多数 IDE 产生注释的方式是一样的。而要产生多行的注释就用 option+command+/,如:
<!--
-->
如果选择文本后按 command+/ 或 option+command+/ 的效果分别是:
<!-- should get
multi-line comments -->
和
<!--
should get
multi-line comments
-->
⇥ 表示 tab 键,例如应用代码片断的时候,如输入 head,后 tab 键,有多个同名片断时,数字选择就得到完整的代码版断。
2. 插入 html 标签, ctrl+shift+<, 即 Insert Open/Close Tag
输入 html,然后按 ctrl+shift+<, 变为 <html></html>
输入 a id="abc",选择上 a id="abc",就变为 <a id="abc"></a>
3. 包裹上标签,ctol+shift+w,即 Wrap Selection in Open/Close Tag,效果是:
直接按 ctrl+shift+< 和 ctrl+shift+w,的效果是一样的,得到 <p></p>,改前面 p 为 head,就变成 <head></head>
输入 hello 并选择上 hello,然后 ctrl+shift+w 就得到 <p>hello</p>,改前面的 p 为 div,就变成 <div>hello</div> Read More