20分钟的得分!累死我了! – View on Path.
Today's Document

No title available

oozey mess
$LAYYYTER

pixel skylines
h
Sade Olutola
Noah Kahan
hello vonnie
Xuebing Du

PR's Tumblrdome
taylor price
The Bowery Presents
NASA

Kiana Khansmith

No title available
trying on a metaphor

shark vs the universe
I'd rather be in outer space 🛸

@theartofmadeline

seen from Morocco
seen from Canada

seen from United Kingdom

seen from United Kingdom

seen from France

seen from Morocco
seen from United Kingdom

seen from Germany
seen from Vietnam
seen from United States
seen from Italy

seen from United Kingdom

seen from United States

seen from India

seen from Netherlands

seen from Vietnam
seen from Russia
seen from United States

seen from Malaysia

seen from United Kingdom
@harleywang-blog
20分钟的得分!累死我了! – View on Path.
JsDoc整理笔记
@author:指示代码的作者 @fileOverview:整个文件的说明信息 @name:类名 @class:提供类的有关信息 @param:方法的参数说明 @property:类的属性说明 @namespace:命名空间说明,可用于Window下的单体对象 @see:描述相关的资源,创建一个HTML链接,指向指定类的描述 @static:静态,访问该变量不需要实例 @inner || @private:表示私有或内部,注:在文档上不会被显示 @example:定义范例 @description:描述细节 @constructor:明确一个方法是某个类的构造函数 @version:标注版本 @constant:声明常量 @return || @returns:描述函数的返回值 @function:声明方法 @extends:类继承的父类@requires: 依赖的类 @since:自(表明某属性特征,是在什么版本之后才有的) 不能自动区分哪个函数是方法还是事件,需要使用 @function 或 @event 加以区分
Erlang学习路上
想用Erlang研究一下WebSocket,昨天编译了大半夜还是有问题,今天开始熟悉一下Erlang的语法和规则。
1. 变量必须以大写字母开头。 2. 字符串必须使用双引号。 3. $a 可以得出a的ACSII码。 4. 原子是一串以小写字母开头,后跟数字字母或下划线或@的字符,并且是全局有效的。 5. f()命令可以释放shell所绑定过的变量。 6. Erlang文件的扩展名为.erl,编译后的Erlang文件扩展名为.beam(bogdan 抽象机) 7. 调用模块下的函数使用:冒号。 8. c(模块名)可以编译该模块。 9. 同一个函数,可以有不同的模式(参数),有点类似多态。 10. 在shell环境下,cd("目录名")可以切换工作目录。 11. -export([Name/N])表示一个带有N个参数;函数名为:Name 12. 列表可为分头和尾,例如:[H|T], H为头,T为尾。 13. 符号的含意: 逗号(,)用来分隔函数调用、数据构造器以及模式中的参数。 句号(.)用来在shell中分隔完整的函数和表达式。 分号(;)用来分隔子句。 14. fun函数为匿名函数。
iOS的旋屏控制技巧
在iOS5.1 和 之前的版本中, 我们通常利用 shouldAutorotateToInterfaceOrientation: 来单独控制某个UIViewController的旋屏方向支持,比如:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); }
但是在iOS6中,这个方法被废弃了,使用无效。实践后会发现,通过supportedInterfaceOrientations的单独控制是无法锁定屏幕的。
-(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; }
多次实验后总结出控制屏幕旋转支持方向的方法如下: 子类化UINavigationController,增加方法
- (BOOL)shouldAutorotate { return self.topViewController.shouldAutorotate; } - (NSUInteger)supportedInterfaceOrientations { return self.topViewController.supportedInterfaceOrientations; }
并且设定其为程序入口,或指定为 self.window.rootViewController 随后添加自己的view controller,如果想禁止某个view controller的旋屏:(支持全部版本的控制)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } -(BOOL)shouldAutorotate { return NO; }
-(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; }
如果想又开启某个view controller的全部方向旋屏支持:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } -(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAllButUpsideDown; } -(BOOL)shouldAutorotate { return YES; }
从而实现了对每个view controller的单独控制。 顺便提一下,如果整个应用所有view controller都不支持旋屏,那么干脆:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { return UIInterfaceOrientationMaskPortrait; }
自动尺寸调整行为
当您改变视图的边框矩形时,其内嵌子视图的位置和尺寸往往也需要改变,以适应原始视图的新尺寸。如果视图的autoresizesSubviews属性声明被设置为YES,则其子视图会根据autoresizingMask属性的值自动进行尺寸调整。简单配置一下视图的自动尺寸调整掩码常常就能使应用程序得到合适的行为;否则,应用程序就必须通过重载layoutSubviews方法来提供自己的实现。
设置视图的自动尺寸调整行为的方法是通过位OR操作符将期望的自动尺寸调整常量连结起来,并将结果赋值给视图的autoresizingMask属性。表2-1列举了自动尺寸调整常量,并描述这些常量如何影响给定视图的尺寸和位置。举例来说,如果要使一个视图和其父视图左下角的相对位置保持不变,可以加入UIViewAutoresizingFlexibleRightMargin和UIViewAutoresizingFlexibleTopMargin常量,并将结果赋值给autoresizingMask属性。当同一个轴向有多个部分被设置为可变时,尺寸调整的裕量会被平均分配到各个部分上。
UIViewAutoresizingNone
这个常量如果被设置,视图将不进行自动尺寸调整。
UIViewAutoresizingFlexibleHeight
这个常量如果被设置,视图的高度将和父视图的高度一起成比例变化。否则,视图的高度将保持不变。
UIViewAutoresizingFlexibleWidth
这个常量如果被设置,视图的宽度将和父视图的宽度一起成比例变化。否则,视图的宽度将保持不变。
UIViewAutoresizingFlexibleLeftMargin
这个常量如果被设置,视图的左边界将随着父视图宽度的变化而按比例进行调整。否则,视图和其父视图的左边界的相对位置将保持不变。
UIViewAutoresizingFlexibleRightMargin
这个常量如果被设置,视图的右边界将随着父视图宽度的变化而按比例进行调整。否则,视图和其父视图的右边界的相对位置将保持不变。
UIViewAutoresizingFlexibleBottomMargin
这个常量如果被设置,视图的底边界将随着父视图高度的变化而按比例进行调整。否则,视图和其父视图的底边界的相对位置将保持不变。
UIViewAutoresizingFlexibleTopMargin
这个常量如果被设置,视图的上边界将随着父视图高度的变化而按比例进行调整。否则,视图和其父视图的上边界的相对位置将保持不变。
图2-8为这些常量值的位置提供了一个图形表示。如果这些常量之一被省略,则视图在相应方向上的布局就被固定;如果某个常量被包含在掩码中,在该方向的视图布局就就灵活的。
图2-8 视图的自动尺寸调整掩码常量
如果您通过Interface Builder配置视图,则可以用Size查看器的Autosizing控制来设置每个视图的自动尺寸调整行为。上图中的灵活宽度及高度常量和 Interface Builder中位于同样位置的弹簧具有同样的行为,但是空白常量的行为则是正好相反。换句话说,如果要将灵活右空白的自动尺寸调整行为应用到 Interface Builder的某个视图,必须使相应方向空间的Autosizing控制为空,而不是放置一个支柱。幸运的是,Interface Builder通过动画显示了您的修改对视图自动尺寸调整行为的影响。
如果视图的autoresizesSubviews属性被设置为NO,则该视图的直接子视图的所有自动尺寸调整行为将被忽略。类似地,如果一个子视图的自动尺寸调整掩码被设置为UIViewAutoresizingNone,则该子视图的尺寸将不会被调整,因而其直接子视图的尺寸也不会被调整。
请注意:为了使自动尺寸调整的行为正确,视图的transform属性必须设置为恒等变换;其它变换下的尺寸自动调整行为是未定义的。
自动尺寸调整行为可以适合一些布局的要求,但是如果您希望更多地控制视图的布局,可以在适当的视图类中重载layoutSubviews方法。有关视图布局管理的更多信息,请参见“响应布局的变化”部分。