南风


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索
close

iOS中的仿射变换

发表于 2015-09-06   |   分类于 IT随笔

在开发中我们有时需要对视图做旋转和缩放,iOS提供了三种仿射变换:平移、旋转、和缩放。

一、仿射变换

每个仿射变换可以由一个矩阵A和一个向量b给出,它可以写作A和一个附加的列b。一个仿射变换对应于一个矩阵和一个向量的乘法,而仿射变换的复合对应于普通的矩阵乘法。

CGAffineTransform结构体

struct CGAffineTransform {
  CGFloat a, b, c, d;
  CGFloat tx, ty;
};

CGAffineTransform实际上是一个矩阵

| a,  b,  0 |
| c,  d,  0 |
| tx, ty, 1 |

这个矩阵是用来标记这个View的变化,可以是旋转,缩放,平移。
也就是说,View的坐标为 {x,y},变化后的坐标是{x’,y’}

                    | a,  b,  0 |
{x',y',1}={x,y,1} x | c,  d,  0 |
                    | tx, ty, 1 |

二、创建Transformations

1、直接创 建

使用CGAffineTransformMake函数

CGAffineTransform CGAffineTransformMake (
   CGFloat a,
   CGFloat b,
   CGFloat c,
   CGFloat d,
   CGFloat tx,
   CGFloat ty
   );

参数比较多,很少使用。

2、创建缩放变换

使用CGAffineTransformMakeScale函数

CGAffineTransform CGAffineTransformMakeScale (CGFloat sx, CGFloat sy);

sx为宽度缩放因子,sy为高度缩放因子。假设是一个图片视图引用了这个变换,那么图片的宽度就会变为 width*sx ,对应高度变为 hight * sy。

3、创建旋转变换

使用CGAffineTransformMakeRotation函数

CGAffineTransform CGAffineTransformMakeRotation ( CGFloat angle);

以弧度为参数,表示要旋转的度数。

4、创建平移变换

使用CGAffineTransformMakeTranslation函数

CGAffineTransform CGAffineTransformMakeTranslation (CGFloat tx,CGFloat ty);

设置一个视图的transform属性,那么它的起始位置 x 会加上tx , y 会加上 ty

三、修改Transformations

1、对传入的变换加上平移

CGAffineTransformTranslate

CGAffineTransform CGAffineTransformTranslate (
    CGAffineTransform t,
    CGFloat tx,
    CGFloat ty
 );

2、对传入的变换加上缩放

CGAffineTransformScale

CGAffineTransform CGAffineTransformScale (
    CGAffineTransform t,
    CGFloat sx,
    CGFloat sy
);

3、对传入的变换加上旋转

CGAffineTransformRotate

CGAffineTransform CGAffineTransformRotate (
    CGAffineTransform t,
    CGFloat angle
);

4、反转传入的变换

CGAffineTransformInvert

CGAffineTransform CGAffineTransformInvert (CGAffineTransform t);

5、合并两个变换

CGAffineTransformConcat

CGAffineTransform CGAffineTransformConcat (CGAffineTransform t1, CGAffineTransform t2);

返回一个由 t1 和 t2 合并而成的Transformation

拆掉思维里的墙经典语录

发表于 2015-09-03   |   分类于 成长中的感悟
你是否缺少安全感?你会经常觉得累吗?结婚一定要买房吗?坚持一定会成功吗?努力一定有结果?只有有钱才能够幸福?老板可以掌控吗?小人物就无法对抗不公平吗?你对如今的生活不满意,但却因为父母、老婆或者孩子不得不这样过下去吗?每天都在混日子,却幻想有一天找到自己真正喜欢的事业就一定会全心投入?……如果有一个回答是“YES”,那么这本书就是你想要的。也许,连我们自己也不曾意识到,那些困惑背后,往往藏着一堵堵思维里的墙,阻碍着我们,把我们与美好的生活隔开了。拆掉思维里的那些墙,你就可以获得成功、快乐、自信和幸福。从“IMPOSSIBLE”到“I’M POSSIBLE”,只须一点改变,你的人生也许就此大不相同。我们应该冲出牢笼,努力投资自己,哪怕工资不高,也要拿出一部分资金来强大自己,让自己更有价值。也不要因为职业安全感把自己困住,走出去追求自己想要的生活。
  • 1、对于大多数刚走入社会的人来说,一套房子就能消灭一个梦想。

  • 2、安全感不是拿回来,而是给回来的。

  • 3、无趣之人,往往是无胆之人。孩子对学习“不感兴趣”,往往是由于自己觉得没有学好的能力,或者再怎么努力也达不到父母的要求;老人们对任何事情都 “不感兴趣”,是因为他们觉得自己能力不足,或者怎么做都没有年轻人做的好。但是没有人愿意说我很害怕,所以他们骗自己说,我根本不感兴趣!

  • 4、为什么很多有钱人一点也不快乐?因为当他们有了钱之后才发现,钱根本不是他们想追求的。

  • 5、坚持一定会成功吗?答案是错,这是成功学一贯的理念,如果坚持能成功的话,苦追刘德华的杨丽娟就会成为刘德华的老婆的。

  • 6、与其在等待中枯萎,不如在行动中绽放。

  • 7、花费你的一部分过去,去购买一个未来。

  • 8、别用自己的生命点燃别人眼中的光环。

  • 9、你的潜能就好像你的咨询顾问,如果一开始你信任他,他就会越来越努力,为你做越来越多的事情。但是如果你一开始就不信任他,而去依赖其他的东西,他就会慢慢远离你,在你需要用的时候,他再也不会再来。

  • 10、恐惧就是这样一个懦夫,当你触及他的底线,接受事情最坏的结果,然后开始准备和它大干一场的时候,它早就不知道躲到哪里去了。

  • 11、一个成功的职业发展人士,十年后一个月的收入是十年前一年收入的十倍。

  • 12、在今天这个变化多端的社会,期待一个公司或者行业连续10年都有最快的发展,怎么可能呢?自我的快速发展,也许需要通过调整职业方向的方式来实现。而房贷却让我们不敢做任何的职业变动。

  • 13、以今天的房价,排除那些富二代不说,普通人买房只有两种情况,一种是双方父母出钱资助,这种人的前途和发展基本上被父母控股了。第二种人是牺牲了太多的发展机会,典当梦想来成就一套房子。

  • 14、爱有两种,一种是死死抓住,你紧张他也紧张;一种是轻松拖住,你舒服他也舒服。

  • 15、安全感绝对不是来自婚姻,如果你是抱着想要安全感而进入婚姻的话,这个婚姻80%会出现问题。

  • 16、我没有一个人活下去的勇气,没有你我怎么办,干得好不如嫁得好。这些天天围绕在我们身边的屁话,你真的相信吗?其实说出这些话的人都是没有安全感的人。

  • 17、你是否给爱人发过短信“小红,我爱你。”然后拿着手机焦急的等待,一分钟看一次,你在等待对方的回复“小明,我也爱你”。其实这不是爱,而是索 取,真正的爱的表达不是期望得到对方同等的回复,不要把爱自己当成爱别人。那些打着爱的旗号的伤人者、自残者、伟大牺牲者,没有发现,那其实不是爱,而是 恐惧。

  • 18、我们很多时候把依赖当成了爱,当看到别人没有自己也活得很好的时候,内心就会莫名其妙的生气,觉得对方不爱自己了。其实真正的爱,是给对方自由,也给自己自由。

  • 19、你的父母有没有对你说过:“我这样为了你,你却让我这么伤心。”这些话听上去是爱的表达,其实是一种要求与责备。翻译过来就是:“我对你这么好,所以你必须听我的话!”

  • 20、你的孩子得了100分,你很高兴,对他说:“你得了一百分,妈妈好爱你啊!”但当他得60分的时候,你又会说什么呢?你会不会生气地说:“怎么这么低?妈妈不喜欢你了!”你的孩子很快就会学会:妈妈爱的不是我,而是我的分数。他也会把“喜欢”和“爱”混为一谈。

  • 21、能力=天赋*时间,如果有一件事你没有成功,那不一定是欠缺天赋,而是欠缺时间。

  • 22、不相信自己,又随时害怕失去。我们终将被奴役,成为安全感的奴隶。

  • 23、在安全的环境,拆掉思维里的墙,小范围地冒一冒险吧!试试看只用你们家房子的一平方米的钱,给自己安排一段旅游;试试看在一两个你永远不再去也不可惜的小群体里面做做自己一直不好意思做的事;试试看给那些可去可不去的职位打电话,试着推销一下自己试试看……

  • 24、远离那些让你容易获得安全感的事情!包括过于关心你的父母、一张可以任意刷的卡、一个不会犯错误的任务和一个养老般的工作。那会驯化你成为安全感奴隶!

  • 25、给自己一个恐惧保险箱,你会发现,你曾经担心的那些东西,几乎从来没有发生过。

  • 26、很多人害怕公众演讲,其实,你真正恐惧的不是讲砸,而是自己没有能力面对讲砸的状况,这才是你内心深处的不自信与恐惧。

  • 27、背对恐惧最可怕,当你真的转过脸去面对,会发现其实没有什么好怕的。

  • 28、你有没有被逼到命运的墙角?有没有试过触碰想都不敢想的事情的底线?那请记得问自己:如果我失败了,新来了一个家伙/新的情况下,我会怎么办?

  • 29、你有没有注意到,安全感不是从别人身上要什么,而是内心深处,一种被需要的感觉?你有没有注意到,安全感不是从别人身上拿到些什么,而是为这个世界给予些什么?你有没有注意到,安全感是给出来的,而不是要回来的呢?

  • 30、我们在吃饭时想着工作,在工作时想着出错,在恋爱时担心分手,在拥抱时还在看表……我们不能在适当的时间做专一的事,所以我们还是凡人一个。

  • 31、乐趣来源于全情投入,而不是投入后的结果,正是因为这样,乐趣可以是无条件的。

  • 32、一个婴儿在玩的时候咯咯地笑,并不是因为这个游戏会让他获得什么。我们在演奏乐器时觉得开心,并不是因为我们要通过这个拿到钢琴十级。我们在听笑 话的时候哈哈大笑,并不是因为我们要记录下来炫耀给别人。我们看小说时觉得心向往之,并不是因为这本小说能让我减压。因为快乐就是快乐,投入的快乐是无条 件的。

  • 33、当你真正完全投入到当下的事情中去时,不管这个事情多么简单卑微,你都能感受到无穷的乐趣。任何一个瑜伽教练都会告诉你,即使认真地投入你的呼吸——这个每天你做过无数次的事情——都能感受到无数的乐趣。

  • 34、不计较钱多钱少肯认真工作的人,往往觉得只要是能从事这份工作,本身就是对他的最大报酬。事实上,当一个人为了工作本身而不是工作后的工资来做事情的时候,他往往能够把工作做到最好,也一定会收到最多的报酬。

  • 35、生命就好像镜子一样,有趣之人对生活保持着极高的投入度,全力拥抱,生活也全力拥抱他。无趣之人用“没兴趣”把自己和生命隔绝,所以生命也躲开他。

  • 36、寻找那些不能够被满足的深层兴趣,比如爱、成长、超越自己、快乐、助人、宁静……它们会让你幸福一辈子。

  • 37、成功的尝试能收获到成果,不成功的尝试能收获到智慧。

  • 38、什么是快乐?就是做事情既快,又乐!

  • 39、对什么都“不感兴趣”的人,害怕冒险,害怕失败,所以压根不投入,不投入就难以获得成果,哪怕是一点点的进步。当一个人对自己的生命开始用“不感兴趣”来搪塞时,生命也开始对他不感兴趣了。

  • 40、带着关爱而不是期待的投入生活,你会发现能力与乐趣接踵而来。

  • 41、为你的生命找到一个长期的、深层的、不能被满足的乐趣。让这个永恒乐趣带领你穿透生命的无常。

  • 42、我们就是自己生命的巫师,我们给自己搭建一个幻想世界,然后在现实中让这个幻想慢慢实现。

  • 43、如果你是金子,你要提高你的含金量到一定程度,才会成为金矿。当你被挖掘出来,你要经过很痛苦的碾磨、冲刷、浸泡,要让你身上的杂质,不好的习惯、污点被熔掉。然后还要成型、打磨、抛光,最后才成为很有价值的发光的金子!

  • 44、人们宁愿自我欺骗,也不愿意相信自己是被欺骗的。因为他活在自己的思维之墙当中。

  • 45、“道”是不会改变的,而“法”会简单地改变,至于做事情的方式“术”,就会经常地改变。

  • 46、一件事情的价值,不取决于现在你判断的价值,而取决于在未来情况中的价值,这就叫做未来价值。懂得静观大地开花结果的人,决不会为失去的一切而痛心。

  • 47、沉没成本其实就是已经损失的成本,为了这个损失而追加成本,最后只头破血流。害怕损失的人,损失最大。

  • 48、有目标的人穿越困难航行,无目标的人躲避困难漂泊。航行者一直在接近目标,漂泊者一直在逃离恐惧。

  • 49、爱害者最擅长的两件事:这不关我事,那不关我事。当然他们也没有做过任何事。他们每一个人都在别人的受害者故事中获得不少廉价的快乐。其实是因为受害者深深坚信,自己快乐与否、成功与否掌握在他人手中。

  • 50、你的生命就像你的家。因为你的不坚持,却让别人进来布置。但是你不要忘了,在里面住一辈子的还是你自己民。所以让你的父母停止质疑的最好方式,就是尽快开始 的行动,然后用事实证明给他们看!你不妨把自己的梦想想象成一家上市公司的董事会,你和你的父母对于“你”这个公司都有一定的发言权。他们占有一定的股 份。他们有权利发言,有权利表达观点,而你也有义务认真倾听、考虑。但记得在关于你人生的董事会上,你永远是最大的股东。

  • 51、我们很听话地长成为一群有脑无心的人,一群有逻辑没情感的人,一群讲高度不讲尊重的人。我们长成为别人要求的样子,并且以此为荣。就这样,我们把自己弄丢了。

  • 52、当一个人等待与拖延的成本,远远高于他真正开始行动所需要的成本,他就会慢慢陷入越等待越不行动的怪圈。我把这个模式称为“等死模式”。

  • 53、什么是成长?那是你内心的一个尺度。你能够感觉到你的成长,你内心知道你会成长为什么样子,就好像一棵橡树籽,无需教导,也会成长为一棵挺拔的橡树。世界上每一个人都可以成长为自己最好的样子,同时我们也拥有关于成长为这个样子所有的资源。

UNIX编程艺术之策略与机制相分离

发表于 2015-09-01   |   分类于 IT随笔

categories:

  • IT随笔

在现代操作系统的结构设计中,经常利用“机制与策略分离”的原理来构造OS结构。所谓机制,是指实现某一功能的具体执行机构。而策略,则是在机制的基础上,借助于某些参数和算法来实现该功能的优化,或达到不同的功能目标。通常,机制处于一个系统的基层,而策略则处于系统的高层。

在程序设计中,机制与策略分离的思想可以提高程序的可复用性,可维护性和可调试性使程序更具有高内聚低耦合性。如果说机制是砖,那么策略就是房子,同样的砖可以建不同的房子,我们不能把建砖和建房子混在一起实现,所以,把策略同机制揉成一团有两个负面影响:一来会使策略变得死板,难以适应用户需求的改变,二来也意味着任何策略的改变都极有可能动摇机制。

策略的变化要远远大于机制的变化。将两者分离,可以使机制相对保持稳定,而同时支持策略的变化。

这条准则在GUI环境之外也被广泛应用。总而言之,这条准则告诉我们要将接口和引擎剥离开来。

UIView继承自UIResponder,主要特点是可以响应触摸事件。CALayer专司图层内容管理和绘制。CALayer是机制,在系统中属于不可变部分,UIView属于策略,在系统中属于可变部分。构建一个系统要尽肯能分离可变部分和不可变部分。

在代码大全中提到“隔离变化”的概念,以及设计模式中提到的将易变化的部分和不易变化的部分分离也是这个思路。

S.O.L.I.D.类设计原则

发表于 2012-07-25   |   分类于 IT随笔

本文是由敏捷宣言签署人之一、《 Clean Code(代码整洁之道)》一书的作者Robert C. Martin为他的《Applying Principles and Patterns》这本书搜集整理而来。

单一责任原则(SRP)

只有一个理由去修改一个类。例如,如果一个业务规则的改变会导致这个类的修改,那么,数据库、界面、报表格式或系统任何其它的部分的改变都不该迫使这个类做修改。

开发/关闭原则(OCP)

软件构成(类,模块,方法等)向扩展行为开放,向修改行为关闭。

Liskov替换原则(LSP)

子类必须能够用来当作基类使用。如果类A继承类B,任何能使用A的地方,B也同样可以使用。例如,是否还记得,正方形可以看作是矩形!当进行扩展 时:前提条件不许绕过,后置条件不能放宽限制,可见常量不能被修改(?)。常量:在扩展之前或之后,用户都需要依靠这个常量来传递信息。正确的使用set 形式的继承关系。不遵守set语义是非常危险的。归纳:使用超类的引用的任何上下文中也可以使用其子类的引用替代。这个原则极大的限制了在纯扩展(继承) 机制里可以做的事情。不遵守会带来风险。

接口分离原则(ISP)

一个类对另一个类的依赖应该限制在最小化的接口上。

反向依赖原则(DIP)

依赖抽象层(接口),而不是具体类。

1…34
翻盖的乌龟

翻盖的乌龟

沙滩一躺三年半,大浪来时我翻身。

19 日志
3 分类
© 2019 翻盖的乌龟
由 Hexo 强力驱动
主题 - NexT.Mist