多动画特效 列表页详情页二合一

//

//  ODCircleLeftController.m

//  oudaBuyer

//

//  Created by lixiang on 16/1/18.

//  Copyright © 2016 ouda. All rights reserved.

//

#import “ODCircleLeftController.h”

#import “ODCircleModel.h”

@interface ODCircleLeftController ()

@property (nonatomicstrongNSMutableArray *arr;

@property (nonatomicstrongUIScrollView *scrollView;

@property (nonatomicstrongUIView *topView;

@property (nonatomicstrongUIButton *backButton;

@property (nonatomicassignlong selectedTag;

@property (nonatomicstrongUIImageView *imgView;

@property (nonatomicstrongUIImageView *blurImageView;

@property (nonatomicstrongUIImageView *designerView;

@property (nonatomicassignfloat moveLength;

@end

@implementation ODCircleLeftController

– (void)viewDidLoad {

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor whiteColor];

    UIView *topView = [[UIView alloc]initWithFrame:CGRectMake(00kWidthOfScreenkWidthOfScreen*0.884)];

    self.topView = topView;

    topView.backgroundColor = [UIColor blackColor];

    [self.view addSubview:topView];

    

    UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(00kWidthOfScreenkWidthOfScreen*0.884)];

    self.imgView = imgView;

    [self.topView addSubview:imgView];

    self.topView.hidden = YES;

    

    UIImageView *designerView = [[UIImageView alloc]initWithFrame:CGRectMake(0kWidthOfScreen*0.884kWidthOfScreenkWidthOfScreen*0.762)];

    designerView.image = [UIImage imageNamed:@”下半部分];

    self.designerView = designerView;

    [self.view addSubview:designerView];

    

    UIButton *backButton = [[UIButton alloc]initWithFrame:CGRectMake(15153333)];

    [backButton setImage:[UIImage imageNamed:@”返回forState:UIControlStateNormal];

    [self.view addSubview:backButton];

    self.backButton = backButton;

    [backButton addTarget:self action:@selector(click2list) forControlEvents:UIControlEventTouchUpInside];

    

    [self requestData];

    [self cover];

}

– (NSMutableArray *)arr {

    if (_arr == nil) {

        self.arr = [NSMutableArray array];

    }

    return _arr;

}

– (void)requestData {

    ODCircleModel *model1 = [ODCircleModel new];

    UIImage *image1 = [UIImage imageNamed:@”testImg1″];

    model1.image = image1;

    [self.arr addObject:model1];

    

    ODCircleModel *model2 = [ODCircleModel new];

    UIImage *image2 = [UIImage imageNamed:@”testImg2″];

    model2.image = image2;

    [self.arr addObject:model2];

    

    ODCircleModel *model3 = [ODCircleModel new];

    UIImage *image3 = [UIImage imageNamed:@”testImg3″];

    model3.image = image3;

    [self.arr addObject:model3];

    

    ODCircleModel *model4 = [ODCircleModel new];

    UIImage *image4 = [UIImage imageNamed:@”testImg4″];

    model4.image = image4;

    [self.arr addObject:model4];

}

/**

 *  遮盖层

 */

– (void)cover {

    UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(00kWidthOfScreenkHeightOfScreen)];

    scrollView.showsVerticalScrollIndicator = NO;

    scrollView.backgroundColor = [UIColor whiteColor];

    [self.view addSubview:scrollView];

    self.scrollView = scrollView;

    

    for (int i = 0; i < self.arr.count; i++) {

        UIButton *button = [UIButton new];

        button.tag = i;

        [button addTarget:self action:@selector(click2Detail:) forControlEvents:UIControlEventTouchUpInside];

        ODCircleModel *model = self.arr[i];

        [button setImage:model.image forState:UIControlStateNormal];

        [button setBackgroundImage:[model.image blurBlackImageforState:UIControlStateNormal];

        button.imageView.contentMode = UIViewContentModeScaleAspectFill;

        button.frame = CGRectMake(0, (i)*kWidthOfScreen*0.625kWidthOfScreenkWidthOfScreen*0.884);

        [self.scrollView addSubview:button];

    }

    self.scrollView.contentSize = CGSizeMake(kWidthOfScreenkWidthOfScreen*0.625*self.arr.count+110);

}

/**

 *  点击进入详情页

 */

– (void)click2Detail:(UIButton *)sender {

    

    ODCircleModel *model = self.arr[sender.tag];

    self.imgView.image = [model.image blurBlackImage];

   

    [self.delegate hideNavBar:YES];

    self.selectedTag = sender.tag;

    self.scrollView.backgroundColor = [UIColor clearColor];

    for (UIButton *btn in self.scrollView.subviews) {

        if ([btn isKindOfClass:[UIButton class]]) {

            if (btn.tag == sender.tag) {

                

                ODCircleModel *model = self.arr[btn.tag];

                UIImageView *blurImageView = [[UIImageView alloc]initWithFrame:btn.frame];

                blurImageView.image = [model.image blurBlackImage];

                [self.scrollView addSubview:blurImageView];

                blurImageView.alpha = 0;

                self.blurImageView = blurImageView;

                

                CGPoint point = [btn convertPoint:btn.bounds.origin toView:self.view];

                self.designerView.x = btn.x;

                self.designerView.y = btn.y;

                [UIView animateWithDuration:0.6 animations:^{

                    btn.transform = CGAffineTransformMakeTranslation(0, -point.y);

                    self.designerView.frame = CGRectMake(0kWidthOfScreen*0.884kWidthOfScreenkWidthOfScreen*0.762);

                    self.blurImageView.transform = CGAffineTransformMakeTranslation(0, -point.y);

                    self.moveLength = point.y;

                    self.blurImageView.alpha = 1;

                }];

                

            }else if(btn.tag>sender.tag){

                [UIView animateWithDuration:0.6 animations:^{

                    CGPoint point = [btn convertPoint:btn.bounds.origin toView:self.view];

                    btn.transform = CGAffineTransformMakeTranslation(0,kHeightOfScreen – point.y);

                }];

            }else if (btn.tag<sender.tag){

                    CGPoint point = [btn convertPoint:btn.bounds.origin toView:self.view];

                    [UIView animateWithDuration:0.6 animations:^{

                    btn.transform = CGAffineTransformMakeTranslation(0, -point.y-(sender.tag-btn.tag)*kWidthOfScreen*0.625);

                }];

            }

        }

    }

    

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.6 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        self.topView.hidden = NO;

        self.scrollView.hidden = YES;

    });

}

/**

 *  点击回到列表页

 */

– (void)click2list {

    [self.delegate hideNavBar:NO];

    self.scrollView.hidden = NO;

    

    for (UIButton *btn in self.scrollView.subviews) {

        if ([btn isKindOfClass:[UIButton class]]) {

            if (btn.tag == self.selectedTag) {

                [UIView animateWithDuration:0.6 animations:^{

                    btn.transform = CGAffineTransformMakeTranslation(0,0);

                    self.blurImageView.transform = CGAffineTransformMakeTranslation(0,0);

                    self.blurImageView.alpha = 0;

                    self.designerView.y -= kHeightOfScreenself.moveLengthself.designerView.y;

                }];

                

            }else if(btn.tag > self.selectedTag){

                [UIView animateWithDuration:0.6 animations:^{

                    CGPoint point = [btn convertPoint:btn.bounds.origin toView:self.view];

                    btn.transform = CGAffineTransformMakeTranslation(0,-(kHeightOfScreen – point.y));

                }];

            }else if (btn.tag < self.selectedTag){

                CGPoint point = [btn convertPoint:btn.bounds.origin toView:self.view];

                [UIView animateWithDuration:0.6 animations:^{

                    btn.transform = CGAffineTransformMakeTranslation(0,point.y+(self.selectedTag-btn.tag)*kWidthOfScreen*0.625);

                }];

            }

        }

    }

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.6 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        self.scrollView.backgroundColor = [UIColor whiteColor];

    });

}

@end

丛非从:需要别人是一种能力

很多矛盾,尤其是亲密关系的矛盾,都来自于我们不能直接的表达自己的需要。

我很需要你。这是一个事实,却又很难说出口。

“需要”这个词,给人带来的最原始印象就是弱者才需要别人。一旦承认了需要,就意味着我比你低,我比你低岂不很危险吗?自尊心上就受不了。

有的人会觉得,如果我开口表达我的需要你才满足我,那你并不是真的想满足我,你只是出于某种义务或不耐烦而做的,索要来的就没意义了。那感觉像是一种施舍,好像我在乞讨你的爱一样,即使我得到了爱,我也没有尊贵感。其本质就是不安全感:如果我不能在心理层面上完成比你高,我就是危险的。

我需要你,也意味着你可能不满足我。当我需要你却不满足,那我的自尊心就会受到重挫,我害怕你拒绝。于是我不能直接要,我只有通过愤怒的方式,来让你知道你错了而改正,好满足我。或者通过假装不需要来告诉自己:I don’t care。

再深一步,我需要你,那么你就掌管着我。从进化心理学的角度来看就是:你掌握着我的生存资料,掌握着我生命的权利。这就是很可怕的一件事了,你掌控了我,万一你抛弃我怎么办,你伤害我怎么办,这不是很挑战我的原始安全感吗?

我所理解的内心感知到的自己强大,有4个层次:

一种是愤怒。

对亲密的人发火,无理的作、折磨、苛刻,是很多人都有过的经验。如果你去聆听愤怒,就会发现,愤怒其实是一种强烈的需求。我对你愤怒,是因为我想从你这要,想从你这拿走一些东西,以得到满足。我有多愤怒,其实是我多需要你。需要你在我身边,需要你陪着我,在意我,关心我。我对你发这些火,只不过是想指责下你为什么没有做。

愤怒真的让人看起来很强大,理智上我们知道愤怒其实并不是强大的表现。但感受上来说,愤怒的时候,我们避免了自己比别人显得低,我们借此完成了心理强大的过程。

一种是假装不需要。

有的人连愤怒都进化不出来了,直接跨越到绝望。发展出合理化的信念进一步的安慰自己:当我得不到,起码我可以告诉自己说我其实不需要。

这就是酸葡萄效应,吃不到葡萄要说葡萄太酸我不喜欢吃。这样就可以拿回主动权,不让自己显得比别人低,以说明我的内心其实很强大。

一种是修行到不需要。

很多心理学家、灵修学家、鸡汤学家都在告诉人们:你可以先爱自己,你完全可以自我满足。于是更多孤独的个体开始被修炼:我自己满足自己就好了,不需要你。理论上说这是可以的,但代价似乎有点大。

一种就是坦然的需要别人。

我所理解的真正强大,是有需要别人的能力。当我们表达需要,并不意味着自己比你低,更不意味着我就失去了自我或者没有尊严。我只是承认我在某些方面的确是无能,需要你。

就像是我去餐馆点个菜,此刻我没有能力和条件做饭,需要餐馆给我一个菜。同时我不觉得我因此就比你低了,因为我坚信我对你有同样的其他付出也让你很满足,我们是平等的。当我表达需要,我也不强迫你满足我,你可以说对不起本餐厅今日没有该菜,那我换个菜或者换个餐厅好了,而不会大吼你为什么居然没有这个菜!你平时不是都有的吗?!

一个看起来强大的人,会自己在家做饭,他有足够的能力不依赖餐厅。但是我还是会觉得,时常下餐厅,生活会更惬意、更自由。

真正的强大就是,我表达需要,但我不受伤。

有表达就有不被满足的概率,表达本身就是一场赌博。得到很好,失败也无需受伤。

如何快速定位代码?

1.搜索导航栏标题,目录标题等固定文字。

2.搜索可能的代码命名,图片命名,方法命名。

3.查看图片,再搜索图片名。

4.查看XIB,再查看此XIB文件属于谁。

5.查看根控制器,看控制器如何跳转。

6.通过注释代码,或者在方法第一行加return;来判断当前代码的作用。

7.截图存储,并注释此截图,作为笔记留存以待今后查阅。

叔本华:独自思考

哪怕是再大的图书馆,如果它藏书丰富但却杂乱无章,其实际用处就反不如那些规模虽小却条理井然的图书馆。同样,如果一个人拥有大量的知识,却未经过自己头脑的独立思考而加以吸收,那么这些学识就远不如那些虽所知不多但却经过认真思考的知识有价值。因为,只有当一个人把他的所知结合各方面来考察,把每一真知相互比照之后,他才能真正理解、掌握这些知识,并使其为己所用。一个人只能对自己知道的事情加以仔细思考,因此他必须要学习新东西;但是,也只有那些经过深思熟虑的东西才能成为他的真知。

一个人可以随意地阅读和学习,却不能随意地思考。

思考与阅读会对人的精神产生不同的影响,其差别之大令人难以置信。因此,这就愈发加大了人们之间本来就存在的思想差异——因为天性的不同,导致有的人热爱思考,有的人喜欢阅读。阅读是把某些外来、异质的思想强加于我们的头脑,这些思想与我们的精神是不相吻合的,就像印章强行在石蜡上留下印记一样。因此,我们的头脑就承受了完全来自外在的压力,一会儿思考这个,一会儿考虑那个,既非出于本能,亦非因为喜欢。

大量的单纯的阅读会使我们的精神丧失灵敏性,就像是一根弹簧连续不断地受到重压就会推动弹性。如果一个人不想动脑思考,最保险的办法就是一旦空闲了就拿起一本书。这就解释了何以博学多识常使很多人变得比原来更加愚蠢麻木,并阻碍他们的作品获得成功。正如蒲柏所说,他们始终是:不停地阅读别人,却从来不会被别人阅读。

学者是成天阅读、研究书本的人。而思想家、天才,以及那些照亮世界、推动人类发展的人,则是直接运用世界这本大书的人。

实际上,只有自己本身的根本思想才具有真理和生命力。因为,只有这些才是一个人能真正、完全理解的。阅读别人的思想,如同吃别人的残羹剩饭,或穿陌生人丢弃的旧衣。

通过阅读获得的思想与自己心中萌发的思想相比,正如史前植物的化石遗迹与春天里蓬勃茂盛的植物相比一样。

阅读只是独自思考的代替物。阅读时,一个人本身的思想是在被别人的思想牵引管束。

此外,很多书籍都无甚益处,除了向我们表明错误的路径如此之多,如果一个人听从这类书的引导,就会误入岐途。但是,受天赋指引的人,亦即独立、自发、正确思考的人,却拥有能够找到正确方向的罗盘。因此,一个人应当只有在自己的思想源泉干涸的时候才去读书——即使是最优秀的头脑也会经常发生思维停滞不前的情况。

因手拿书本阅读而赶跑自己的原创思想,不啻是冒犯神灵的罪过。

只有通过自己独立思考获得的知识,才能融入我们的思想体系,成为整个思维体系的一个鲜活部分,并与整体保持一种完整、坚实的联系。

独自思考的人只是在形成自己的见解之后才知道与权威暗合,此时的权威也同时增强了他们二者的力量。

阅读是在用别人的、而非自己的头脑来思考。自己的独立思考是要努力形成一个连贯的整体、一个系统,即使它不是严密、完备的。没有什么比孜孜不倦地不断阅读,让别人的思想源源不断地进入自己脑中更为有害的事了。

那些将一生的时光都花在了阅读中并从书籍中获取智慧的人,就像是从旅行者的描述中了解一个国家的详细状况的人。这些人可以提供关于这个国家的很多信息,但实际上他们对此地的真实情况并没有连贯、清晰、透彻的了解。而那些一生致力于深思的人,则像是亲自到过某个国家的人。只有他们才真正知道自己所谈的事情,他们对此地的状况完全了解,说起来如数家珍。
但是这里有一个小小的困难需要克服:思考这种事并不能取决于我们自己的意志。一个人只要愿意就可以随时坐下读书,却不能随时坐下思考。思想如同客人,我们不能随自己高兴去召唤他们,而只能耐心等待他们的到来。

我们必须要等待恰当的时机,即使最伟大的天才也不能每时每刻都在独自思索。因此,把思考之外的空余时间用来阅读是可取的做法。正如我说过的,阅读是对独自思考的替代物,它可以借别人的思考为我们提供精神材料——虽然常以一种与我们自己的思维完全不同的方式。出此原因,一个人也不应该读书太多。这样,我们的头脑才不会习惯于思考的替代物,因此而忘却了认识事物的能力;才不会习惯于踏上别人已经走过的道路,遵循别人的思路而忘记自己的思维。当然,更不应该仅仅为了读书而完全放弃对现实世界的关注。

单纯的经验和阅读一样,并不能取代思考。纯粹的经验与思考的关系,犹如进食之于消化吸收的关系。当经验吹嘘说只有通过它的发现,才推动了人类知识的进步时,就像是嘴巴扬言整个身体的生存只是它的功劳。

有思想之人的作品与其他庸人作品的区别,就在于它主题鲜明、内容明确的特点,及由此而来的清晰、流畅。因为这些人明确、清楚地知道自己想要表达的是什么,不管是以散文、诗歌或者音乐的形式。而普通之人却没有这种果断、清晰,因此二者之间就很容易区分开来。

具有最高思想能力的人的特征是,他们对事物的判断都是直接、明确的。他们说的任何东西都是自己思考的结果,其表达见解的方式中也完全显示出这一点。因此,这些人像精神王国的王侯一般,拥有无可辩驳的权威。而其他人只是处在从属的地位,这从他们那缺乏自己特色的表达风格中就可看出。

因此,每个真正独立思考的人,在精神领域内全然是位君主。相比之下,那些头脑庸俗的普通大众,随波逐流于各种各样的流行观点、权威说法与世俗偏见之间,使自己的思维受到限制,就像是那些默默服从法律和命令的平民。

在现实世界中,哪怕它被认为是多么的美丽、愉悦和迷人、惬意,我们还是不得不受制于万有引力定律来活动,一生都在不停地克服它。但在精神的世界里,我们是了肉体束缚的精灵,不再受重力的控制,也没有了贫困之苦。

这就是为何一个完美充沛的精神头脑,在某一神妙时刻从其自身中所得到的快乐、幸福,在现实世界是完全找不到的。

浮现在脑中的思想,犹如站在眼前的恋人。我们幻想着自己永远不会忘记这一思想,自己的恋人也永远不会变心。但是,眼不见,心不想!最精妙的思想如果不及时写下,也会有被遗忘的危险,再也无法挽回;最心爱的人如果我们不与之结婚,也难逃被遗弃的命运。

控制器反向传值(不用代理)

把需要传递的信息作为成员变量写在A控制器的.h文件中。

在push或presnt一个新的控制器B的时候,将A控制器设为B控制器的成员变量。

这样就可以在B控制器中修改A控制器的属性。

 

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (nonatomic, assign) NSInteger age;

@end

@interface ViewController2 : UIViewController

@property(nonatomic,strong)ViewController * viewController;

@end

知乎:哪些书可以提高情商、判断力和谈话技巧?

首先,你要挑对适合你的书
赶紧把那些什么之类二十句之类的扔掉,别再看朋友圈转发的那些鸡汤!

卡内基什么的我还是保留意见。来看两句:
人性的弱点之十八:不尊重他人的意见

反之:对别人的意见表示尊重,不管是对是错

人性的弱点之十九:不敢承认自己的错误

反之:如果你错了,迅速而真诚地承认并及时改正。

讲得是谁都懂的道理,但是犯错的人根本就是没有意识啊,有人根本意识不到什么叫“不尊重他人的意见”,也意识不到自己是错误的。有人意识到了,就是不改。

 

因为这本书并没有真正“说服”你。(什么叫真正说服?请看这书能让你戒烟,这才是真的有用的好书,直至说到你“服”,说到让你“改”。)

 

#致卡耐基粉#
我已经说明为什么我不推荐卡耐基了。一不能彻底说服我二没有太强可操作性。当然如果你觉得好看,合适,那就是适合你呗。与价值观相关的评价本身又没有对错,仅表达个人经验和喜好罢了。

 

我个人(我个人)对这类型书的标准有两个:

1. 能够说服你从根本上“醒悟”。

2. 具有操作性。
其次,是你要明白书在这件事上的意义是什么。是改变你的观念模式(mindset)

低情商人的最大毛病在于自己不知道自己错了,根本就意识不到。

举个例子,我有个朋友,他总是喜欢开别人玩笑,平时喜欢给同事起外号就算了,有一次在年会上对刚去他们公司没多久的部门领导说:“你长得真像王宝强!”
领导只好尴尬地笑笑。
后来听说他和别人抱怨:“为什么新老板总刁难我。”
别人说:“你不该那么开他玩笑。”
他说:“我看他不是那么小心眼的人吧。。。”

注意到了吗?他的意识里根本就没有“我这么做是不合适的”这个概念,错的都是别人。

这就是没有正确的mindset,或者说是没有mindset。

我从一个低情商的loser成长到一个能和别人顺利沟通,大部分人乐意和我相处,少部分人热爱和我相处的人,书可以说给我的帮助是无限量的。

从【道】上,它能纠正你的观念模式,让你产生意识,意识到自己原先的一些固有思维是错误的。
从【术】上,它能指导你通过一些思考方法,巩固自己的新的观念模式。
从【器】上,它能提供一些小技巧实践,让你马上可以改变一些情形。

三者相辅相成,通过不断练习从根本上改变你的观念模式,就像自己给自己的“教养”一样,让观念模式在你的脑海里生根,直到高情商的说话和行为变成了一种习惯。
在这一点上确实是知易行难,但是前提是你要“知”对才能“行”对!)

书单(全是豆瓣链接可以直接点击)

沟通的艺
心理学与生活
学会提问
关键对话
谈话的力量
高难度谈话
谈判力
批判性思维

请王宝强粉原谅我,我不是故意黑他的。
_____________________________________
#关于情商#

1. 情商和智商一样复杂(见智力或智商可以通过后天努力提高吗?)虽然有许多量表但依然不能将“情商”的方方面面纳入其中。

2. 上表可以看出情商的四个部分(也有其它分类方法):
自我意识(是否能意识到自己的情绪、行为、信仰),
社会意识(是否能意识到他人的情绪、行为等并理解他人),
自我管理(是否能选择合适的情绪,输出表达合适的情绪),
关系管理(影响力,矛盾处理能力,合作能力)

3. 上文所说的mindset从这个角度来说就是“自我意识”和“社会意识”。如果意识不到也无法管理。而评论区许多人说“有了意识也控制不住”那就是在自我管理和关系处理上发生了问题。上文提到的书单中“沟通的艺术”一书里详尽地描述了如何进行自我管理和关系管理的原理和方法。

#书与我的成长#
我个人的进步也是从“自我意识”开始的(可见什么是「有效的沟通」,如何面对一个难以沟通的人)。因为青春期看了许多发条橙啊麦田里的守望者之类的老梗,导致自己一度认为特立独行才是姐应有的优秀品质,在人际交往上非常封闭,大学时不和同班同学来往,宿舍关系也极差。

现实中的负面情绪又转化到了网络上,一度在豆瓣上做喷子,看见不爽的帖子就喷。(你们见到喷子就原谅一下他们吧,人艰不拆啊)

在豆瓣扫书时,偶然看到了《学会提问》这本书,突然觉得很好玩,就下了本看。结果脑洞大开(突然之间被点醒,有了自我意识)。一发不可收拾,接二连三地又看掉了以上那些书,慢慢了解了自己某些行为背后的原因是什么,为什么会产生某种情绪,哪些情绪是通过“想通了”就可以解决和消除的,还有自己的某些行为会导致别人怎样的反应,如何控制自己的行为等等等等。然后就开始有意识地练习,比如说父母忘记了事又问我,我肯定会不耐烦的说:“烦死了不是说了好几遍么,什么记性啊。”,在我一旦出现负面情绪的时候我就会给自己按一下暂停,想想这话会带来什么后果,而我到底真正想得到的后果是什么。自己也经常忘记事,父母就从来没有嫌我烦。于是就会耐心地再解释一遍。这时候父母的情绪也会很好。

一旦正循环开始了,你会发现你的情商也会随着这种不停的正反馈变得越来越好。

先是家人发现我变了。以前几乎每周都要和父母顶嘴和吵架,说话没好气。后来争执几乎完全没有了。我妈有一天突然说:我发现你好像毕业以后变温柔了。

到读研的时候人缘关系发生了大逆转,从本科不和人往来,别人也不待见我,到读研时组织大家活动,收获了很多非常亲密的关系。和他们提到大学时人际关系极差,大家都非常惊讶,说根本看不出来你会说那种话做那种事啊。

网络关系同时也发生了逆转,从人见人嫌没有人关注的喷子,到分享给大家我的经验和心得体会,被人关注,还有很多人私信我说喜欢我认真的态度和直爽礼貌的性格。

当然也有少数喷子不喜欢我,我也没想去讨好他们。

#推荐书单的有用性#
如果你没有看过这些书,请至少先看过豆瓣的书籍介绍目录和大众评论文章摘抄再来评论吧,随意就说“没用”或“鸡汤”在我看来并不是一种良好的沟通。

《心理学与生活》为许多国内外大学大一心理学导论教材。
《沟通的艺术》是以心理学研究结果为基础的沟通指南。
《学会提问》和《批判性思维》核心是基本的逻辑思维。甚至可以用其中知识点来写议论文。

别的书不一一介绍,都放了豆瓣链接了,有简介有目录有大众评论,有用没用你们自己看着办。

如果你可以告诉我,我推荐的书究竟哪些地方不足,而不只是几个和书内容无关的空洞形容词,我很愿意了解。

推荐书本身就带着个人喜好主观判断,就像我觉得榴莲好吃,但你可能觉得很臭。书单中的“学会提问”和“批判性思维”中都有提到关于价值观争论无意义的事,我在沟通一文中也提到,不赘述。

#其它问题#
情商并不是一两本书看完了就能提高的,阅读理解能力很重要,阅读后自己对于书籍使用方式的能力也很重要,悟性更重要。

说一句很残酷的话,有些人,你即使把沟通的艺术背下来了,你还是无法沟通。

还好新版沟通的艺术里有一些小练习,大家可以练习起来。

不用指望情商低的人会和情商高的人一样,但至少后天可以弥补一下,比自己原来好,就可以了。

对了,既然都收藏了,就点个赞鼓励一下吧。
_______________________________________________

进化论 – 知乎专栏
情商、智商、职业、外貌,生活的全面提升。 多来这里,你整个人都变好了。
【我们是】 两个女博士, 一个非主流前微软设计师, 还有一个辞了麦肯锡的创业狗。
【我们产】 80%干货+20%鸡精

公众微信号:hibetterme

使用present实现push动画效果

//

//  HYBModalTransition.h

//  PresentDismissTransitionDemo

//

//  Created by huangyibiao on 15/12/21.

//  Copyright © 2015 huangyibiao. All rights reserved.

//

#import <Foundation/Foundation.h>

#import <UIKit/UIKit.h>

typedef NS_ENUM(NSUInteger, HYBModalTransitionType) {

  kHYBModalTransitionPresent = 1 << 1,

  kHYBModalTransitionDismiss = 1 << 2

};

@interface HYBModalTransition : NSObject <UIViewControllerAnimatedTransitioning>

/*!

*  @author 黄仪标, 15-12-21 11:12:44

*

*  指定动画类型

*

*  @param type          动画类型

*

*  @return

*/

+ (HYBModalTransition *)transitionWithType:(HYBModalTransitionType)type;

@end

//

//  HYBModalTransition.m

//  PresentDismissTransitionDemo

//

//  Created by huangyibiao on 15/12/21.

//  Copyright © 2015 huangyibiao. All rights reserved.

//

#import “HYBModalTransition.h”

@interface HYBModalTransition ()

@property (nonatomic, assign) HYBModalTransitionType type;

@property (nonatomic, assign) NSTimeInterval duration;

@end

@implementation HYBModalTransition

+ (HYBModalTransition *)transitionWithType:(HYBModalTransitionType)type

{

    HYBModalTransition *transition = [[HYBModalTransition alloc] init];

    transition.type = type;

    transition.duration = 0.35;

    return transition;

}

– (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext {

    return 0.35;

}

– (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {

    switch (self.type) {

        case kHYBModalTransitionPresent: {

            [self present:transitionContext];

            break;

        }

        case kHYBModalTransitionDismiss: {

            [self dismiss:transitionContext];

            break;

        }

        default: {

            break;

        }

    }

}

– (void)present:(id<UIViewControllerContextTransitioning>)transitonContext {

    UIViewController *fromVC = [transitonContext viewControllerForKey:UITransitionContextFromViewControllerKey];

    UIViewController *toVC = [transitonContext viewControllerForKey:UITransitionContextToViewControllerKey];

    UIView *containerView = [transitonContext containerView];

    UIView *tempView = [fromVC.view snapshotViewAfterScreenUpdates:NO];

    tempView.frame = fromVC.view.frame;

    fromVC.view.hidden = YES;

    [containerView addSubview:toVC.view];

    [containerView addSubview:tempView];

    toVC.view.frame = CGRectMake(kWidthOfScreen, 0, kWidthOfScreen, kHeightOfScreen);

    [UIView animateWithDuration:self.duration animations:^{

        toVC.view.frame = CGRectMake(0, 0, kWidthOfScreen, kHeightOfScreen);

        tempView.frame = CGRectMake(-kWidthOfScreen, 0, kWidthOfScreen, kHeightOfScreen);

        fromVC.view.frame = CGRectMake(-kWidthOfScreen, 0, kWidthOfScreen, kHeightOfScreen);

    } completion:^(BOOL finished) {

        [transitonContext completeTransition:YES];

    }];

}

– (void)dismiss:(id<UIViewControllerContextTransitioning>)transitonContext {

    UIViewController *fromVC = [transitonContext viewControllerForKey:UITransitionContextFromViewControllerKey];

    UIViewController *toVC = [transitonContext viewControllerForKey:UITransitionContextToViewControllerKey];

    UIView *containerView = [transitonContext containerView];

    UIView *tempView = containerView.subviews.lastObject;

    [UIView animateWithDuration:self.duration animations:^{

        toVC.view.frame = CGRectMake(0, 0, kWidthOfScreen, kHeightOfScreen);

        tempView.frame = CGRectMake(0, 0, kWidthOfScreen, kHeightOfScreen);

        fromVC.view.frame = CGRectMake(kWidthOfScreen, 0, kWidthOfScreen, kHeightOfScreen);

    } completion:^(BOOL finished) {

        [transitonContext completeTransition:YES];

        [tempView removeFromSuperview];

        toVC.view.hidden = NO;

    }];

}

@end

//

//  ODDismissNavController.h

//  PresentDismissTransitionDemo

//

//  Created by lixiang on 15/12/24.

//  Copyright © 2015 huangyibiao. All rights reserved.

//

#import <UIKit/UIKit.h>

@interface ODDismissNavController : UINavigationController<UIViewControllerTransitioningDelegate>

@end

//

//  ODDismissNavController.m

//  PresentDismissTransitionDemo

//

//  Created by lixiang on 15/12/24.

//  Copyright © 2015 huangyibiao. All rights reserved.

//

#import “ODDismissNavController.h”

#import “HYBModalTransition.h”

@interface ODDismissNavController ()

@end

@implementation ODDismissNavController

– (void)viewDidLoad {

    [super viewDidLoad];

    self.transitioningDelegate = self;

    self.modalPresentationStyle =  UIModalPresentationCustom;

}

– (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

}

– (id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source {

    return [HYBModalTransition transitionWithType:kHYBModalTransitionPresent];

}

– (id<UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed {

    return [HYBModalTransition transitionWithType:kHYBModalTransitionDismiss];

}

@end

婉艺:不潦草地决定,也不轻易地妥协

原文链接:http://yuedu.163.com/source/1c3ee24d168040b1897c81f2eaa08471_4

在我的初中时代,有过一段灰暗的时光。

那时的我,因为跳级跟不上初中的课程,多门功课亮起了红灯。本来因为会画画,老师选我当了宣传委员,也因为成绩太差而被撤职,不仅如此,还多次被任课老师请家长虽然这些事情现在看来都是无足轻重的小事,可对于当时还是一名初中生的我来说,都是超级丢人和伤自尊心的大事。

清晰地记得,生物老师和地理老师先后找我谈话,告诉我,你的分数简直低得不可思议,全年级比你分数更低的人屈指可数;数学老师在我作业本上的证明题后面写着大大的四个字逻辑混乱!;英语成绩从来都在及格边缘徘徊那几年的我最讨厌家庭聚会,因为饭桌上的话题永远都是我的学习。家里的亲戚都觉得我的父母不应该仅仅为了想要我念重点中学的初中部,就匆忙决定要我跳级,大人们都觉得这孩子考大学没戏了可怎么办。那时候的我,还完全没有长大,也从来没想过自己将来要做什么。只觉得自己好笨,为什么别人能考一百分的卷子,自己却连一半的分数都拿不到?

我觉得自己一无是处,对课上的东西也完全没兴趣。唯一喜欢的,就是自己在一边瞎写写、瞎画画。还记得那时候的班主任李老师,常常用每个班主任都运用娴熟的瞬间移动超能力,悄无声息地出现在我的身后,从我手里没收掉那些被我画满涂鸦的纸和本。很多年后,我在北京大兴区的一个邮局里,寄给他一张画着他Q版头像的明信片。我感激他,感激他从没有阻止过身为差生的我喜欢画画。那些班级里的差生被老师揶揄和讽刺的桥段,从来没有在我的身上出现过。

那位戴着黑框高度近视眼镜,因为和教室里挂着的名人名言上的方志敏很像,而被同学们戏称为方老师 的他,总是淡定地对我说道:这些事,你拿到家里去做就好了。 那时的我,唯一能引以为豪的事情,就是自己的作文分数。在我的初中毕业册里,好几位同学留言说,祝你长大以后,成为一位作家。他们不知道,其实我最喜欢的,是画画。

到了高中,虽然经过了几年时间的适应,我的成绩比初中好了许多,但在那个高手云集的重点中学里,我也只是位于一个中等偏下的位置。以湖南省可怜的高考招生比例来算,当时的我能不能考上大学还是个未知数。直到遇上了立体几何。命运的神奇之处就在于,你永远都不知道你的人生会发生怎样的变化。也许是小时候就画石膏的缘故,我的立体几何学得出奇的顺利,也因此,激发了我的学习兴趣和潜力,从此数学成绩一飞冲天,高二的一次考试,竟然考了满分。当时理科班的同学遇到我,惊讶地对我说:这么难的卷子,你竟然可以考满分,你还是人吗? 这一切,都是初中那个逻辑混乱的我,做梦也想不到的事情。

那一年的家长会,班主任要我在会上给同学们分享数学这门学科的学习经验。不知不觉地,数学成绩也带动了别的科目,我的各科成绩慢慢都好了起来,竟然也成了班里排名靠前的好学生。高考临近,因为怕学专业而耽误文化课,家里人本来也不希望我走艺术这条路,高一的暑假之后,我离开了画室,正式踏上了文化生的道路。

2005 年的夏天,我挤过了湖南省高考的独木桥,考到了北京,开始了我真正意义上的独立生活。因为一直以来,都是写作在带给我自信,我选择了编辑出版专业。那一年,我第一次离开家住集体宿舍,那一年,也恰好是新浪博客在校园中流行起来的一年。

还记得当年刚开始写博客的时候,有位高中闺蜜说:这年头不写个博客什么的,别人都觉得你‘不入流’。那段时间,我身边的许多朋友同学,都纷纷加入了博主的行列,写日志 成了那时候大学生里非常流行的一件事。

从那时开始,我告别了小时候记日记的习惯,从此不再用笔在纸本上写日记,而是逐渐养成了用键盘记录生活的习惯。时至今日,8个年头过去了,刚开博客那会儿加的好友们,几乎都已停止了博客的更新,而我的写作阵地,也由原来的新浪博客,慢慢拓展到了人人网、网易之类的其它社交网站上。去年的时候,因为一篇在微博等各大网站广泛传播的文章,竟然有好几家出版公司的编辑找到我,问我有没有兴趣出书。作为一个学编辑出身的家伙,我从没想过,自己有天也会被编辑找上门来。写作,本来只是我一个小小的爱好而已,从未想过要因此而得到什么。而现在,我竟然也成为了一个有固定读者的写作者,我觉得自己很幸福。

任何一件事,只要坚持十年,一定会有意想不到收获。 在我很小的时候,我妈对我说过这样一句话。因为坚持用写作记录生活,也因为保持思考的状态,我在念大学的那几年,成长得很快。大三的时候,我做了一个自己都觉得非常不可思议的决定:跨系别、跨专业考研。因为我知道,这么多年过去了,自己仍怀揣着一颗热爱绘画的心。记得当时我去艺术设计学院找一个教素描的老师蹭课,当我告诉他我准备考中央美术学院,想来听听课、练练手的时候,他很鄙夷地哼哼笑了几声:你们文化生,别以为画画这条路很好走,不是那么容易的

可是现在,我不仅早已从央美毕业,而且还顺利地成为了一名视觉设计师,每天的工作,就是用电脑画画。所以,你看,当你被他人嘲笑的时候,你不会知道谁能笑到最后。

2011 年,我的文章《行走世间,全是妖怪》在人人网上被三十多万人阅读,好几万人分享,并且被很多其它网站转载的时候,我发现,原来自己的观点能被那么多同龄人认可,自己的文章能被那么多人转发和分享。我非常开心,我幻想着,会不会有一天,自己能出一本写给同龄人的书。

现在,我的那些文字真的集结成了一本书,书里还有我自己画的插图。这本书里所包含的,是我从大学到现在成长的点滴,有我自己和朋友的故事,也有陌生人的悲欢。这八年,是我人生中最重要的八年。现在的我已经远离了美好的校园,走入了社会,但是我依然觉得自己很快乐,很幸福。因为我每天都在做着自己喜欢的事情,每天都在学习各种有用的新技能。我还会继续写下去。八年前的我怎么也不会想到,当时的专业,会成为我现在的业余爱好,而原来的爱好,会变成我后来的专业。感谢绘画和写作,让我能用这么多的方式去感受生活,记录生活。感谢父母的培养,感谢在人生道路上,曾经拉过我一把的老师,感谢我的读者,感谢我的责编,感谢现在我所拥有的一切。

前不久我换了一份工作,一名面试官在看完我的简历和作品之后对我说:我知道了,你就是传说中的‘学霸’吧? 你看,从儿时的学渣,到如今别人眼里的学霸,也就这么回事。我所做的,不过是在每一次选择中,都选择了自己内心最想走的那条路。而这些抉择带给我的,远比我预期的要丰厚得多。曾经有一位老师对我说,人不可能总是做自己想做的事。我很庆幸,自己没有相信他。

所以,也请你们,我的读者,永远别忘记梦想,永远别潦草地决定对现实妥协。永远别因为当时的一点点阻碍,就放弃追逐自己内心最真实的想法。总有一天,你爱的人,你爱做的事,全都会围绕在你身边。

只要你想,只要你做。

只要你做,只要你坚持。

只要你相信,你配得上这世界上,一切的美好。

项目增减动画效果的实现

#import “ViewController.h”

#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)

#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)

@interface ViewController ()

@property (nonatomicstrongNSMutableArray *userArray;

@property (nonatomicstrongNSArray *allArray;

@property (nonatomicstrongNSMutableArray *downArray;

@property (nonatomicstrongUIScrollView *scrollView;

@end

@implementation ViewController

– (void)viewDidLoad {

    [super viewDidLoad];

    self.userArray = [NSMutableArray arrayWithArray:@[@”经典案例@”京东@”淘宝@”天猫@”阿里巴巴@”唯品会@”1号店]];

    self.allArray = @[@”经典案例@”京东@”淘宝@”天猫@”阿里巴巴@”唯品会@”1号店@”苏宁易购@”聚美优品@”我想静静@”静静是谁@”我是静静];

    self.downArray = [NSMutableArray arrayWithArray:@[@”苏宁易购@”聚美优品@”我想静静@”静静是谁@”我是静静]];

    

    UIScrollView *scrollView = [[UIScrollView allocinitWithFrame:self.view.frame];

    [self.view addSubview:scrollView];

    self.scrollView = scrollView;

    self.scrollView.contentSize = CGSizeMake(SCREEN_WIDTH,300+(self.downArray.count*60));

    self.scrollView.backgroundColor = [UIColor clearColor];

    [self setUpperItems];

    [self setDownItems];

}

– (void)setUpperItems{

    CGFloat aW = SCREEN_WIDTH/310;

    CGFloat aH = aW/2.55;

    int num = 3;

    CGFloat marginX = (self.view.frame.size.width – aW * num) / (num + 1);

    CGFloat marginY = 0;

    for (int index = 0; index < self.userArray.count; index++)

    {

        UIButton * btn = [[UIButton allocinit];

        int col = index % num;

        CGFloat aX = marginX + (aW + marginX) * col;

        int row = index / num;

        CGFloat aY = 20 + marginY + (aH + marginY) * row;

        btn.frame = CGRectMake(aX, aY, aW, aH);

        [btn setTitle:self.userArray[index] forState:UIControlStateNormal];

        [btn setTitleColor:[UIColor blackColorforState:UIControlStateNormal];

        [self.scrollView addSubview:btn];

        [btn addTarget:self action:@selector(toDown:) forControlEvents:UIControlEventTouchUpInside];

    }

}

– (void)setDownItems{

    for (int index = 0; index < self.downArray.count; index++)

    {

        UIButton * btn = [[UIButton allocinit];

        btn.frame = CGRectMake(0, index*60+192SCREEN_WIDTH60);

        [btn setTitle:self.downArray[index] forState:UIControlStateNormal];

        [btn setTitleColor:[UIColor blackColorforState:UIControlStateNormal];

        [self.scrollView addSubview:btn];

        [btn addTarget:self action:@selector(toUp:) forControlEvents:UIControlEventTouchUpInside];

    }

}

– (void)toDown:(UIButton *)button{

    

    // 动画效果

    CGRect tempRect = CGRectMake(0200+self.downArray.count*60SCREEN_WIDTH60);

    [UIView animateWithDuration:0.3 animations:^{button.frame = tempRect;}];

    

    // 生成上半部分需要的新的数组

    NSString *str = [NSString stringWithString:button.titleLabel.text];

    NSMutableArray *filteredArray = [[NSMutableArray alloc]initWithObjects:str, nil];

    NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@”NOT (SELF IN %@)”,filteredArray];

    self.userArray = [NSMutableArray arrayWithArray:[self.userArray filteredArrayUsingPredicate:filterPredicate]];

    

    // 生成下半部分需要的新的数组

    [self.downArray addObject:str];

    

    // 延时执行

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        

        // 移除页面中所有的按钮

        for(UIButton *btn in [self.scrollView subviews])

        {

            [btn removeFromSuperview];

        }

        // 重载页面中所有的按钮

        [self setUpperItems];

        [self setDownItems];

    });

    

    

    self.scrollVew.contentSize = CGSizeMake(SCREEN_WIDTH300+(self.downArray.count*60));

}

– (void)toUp:(UIButton *)button{

    // 动画效果

    CGFloat aW = SCREEN_WIDTH/310;

    CGFloat aH = aW/2.55;

    int num = 3;

    CGFloat marginX = (self.view.frame.size.width – aW * num) / (num + 1);

    CGFloat marginY = 0;

    int col = (self.userArray.count) % num;

    CGFloat aX = marginX + (aW + marginX) * col;

    unsigned long row = (self.userArray.count)/num;

    CGFloat aY = 20 + marginY + (aH + marginY) * row;

    CGRect tempRect = CGRectMake(aX,aY,aW,aH);

    [UIView animateWithDuration:0.3 animations:^{button.frame = tempRect;}];

    

    // 生成上半部分需要的新的数组

    NSString *str = [NSString stringWithString:button.titleLabel.text];

    [self.userArray addObject:str];

    

    // 生成下半部分需要的新的数组

    NSMutableArray *filteredArray = [[NSMutableArray alloc]initWithObjects:str, nil];

    NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@”NOT (SELF IN %@)”,filteredArray];

    self.downArray = [NSMutableArray arrayWithArray:[self.downArray filteredArrayUsingPredicate:filterPredicate]];

    

    // 延时执行

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        

        // 移除页面中所有的按钮

        for(UIButton *btn in [self.scrollView subviews])

        {

            [btn removeFromSuperview];

        }

        // 重载页面中所有的按钮

        [self setUpperItems];

        [self setDownItems];

    });

    

    self.scrollView.contentSize = CGSizeMake(SCREEN_WIDTH,300+(self.downArray.count*60));

}

@end

知乎:有哪些简洁的人生建议?

原文链接:http://www.zhihu.com/question/19869956

程御迦

1.不要害怕暴露实力,你的杀手锏总有一天会被时代抛弃。
2.高调的人比低调的人进步得更快。
3.你的人生由你所遇到的人决定。
4.自我坦诚,是这世上最锋利的武器。一就是一,二就是二,问心无愧,你就赢了。
5.艺术创造生活,商人改变世界。心硬者得天下,温柔者得神。商业与艺术的完美结合终将杀出血路。
6.所有优越感只有在转化成压力和鞭笞后,才能为其所用。
7.和任何人保持安全距离,这种人与人之间随时会失去的不安全感才会促使你真正成长。
8.要有“灵”“魂”“气”——每个人都是独一无二的经历构成的独一无二的自己,所以你也要相信自己无限牛逼。
9.人与人相处之道——求同存异,换位思考。
10.学习之道——知识终将遗忘,但学习的方法不会忘。
11.追求之道——注意大师,追随大师,与大师同行,彻底了解大师,成为大师。
12.要小心“边境人”。(“边境人”的“学习效率”很高)
13.逻辑总是“受害者意识”。
14.顶尖技术来自于少数人,最终回归于少数人。“暗箱”永远存在,因此才有趣。
15.爱是一切行动的根源。而具体动机一般是为了让自己心情好。
16.建立绝对的自我信心体系。(一般来说是思维体系)
17.这世界每一天都在验证我们的渺小,但我们却在努力创造,终有一天我们挥发的能动性会在这绮丽画卷中留下自己美好的脚印。
18.世界不以你为中心,你要以自己为中心,做人要有立场,切忌失去自我。
19.他人的经验最多只能参考。最终你也要学会独自面对一切。
20.当你面对思考后,或在未来的路上遇到情况后,回头来对我的观点有质疑,欢迎私下讨论,评论区要有礼貌,这是起码的尊重。
21.自由言论不等于放肆言论。
22.学会倾听。学会遗忘。各取所需。择有用之而为己所用。其他莫须君想太多。

 

Eudemonia:
1.维护不在场的人。
2.所言不多于所知。

宵风

当你喜欢上了一个人,对方哪怕有一点点不会和你在一起的端倪都不要再继续下去,直接放弃。
我们都知道,继续下去,会变成你独自纠缠,庸人自扰,自寻烦恼。
当你不喜欢一个人,不要给对方任何暧昧希望,哪怕是一句问候。
因为你不知道,对方会把你无心的问候不断脑补想象放大意淫然后傻傻的认为你也喜欢他。
任何时候保持距离,君子之交淡如水。
人与人的交往本质是互相利用,想方设法让自己有价值,这样才能与别人互利。
通常别人一天想到你的时间不会超过两秒,在脑海中一闪而过,所以没必要太在意别人对你的看法。
一般人通常分不清自己是寂寞作祟生殖需要还是真的喜欢。
任何人都靠不住,杜绝依赖他人。
把所有的事都做的惨烈像自残,以突显自己的爱和付出,让他内疚,让他心疼为此感恩戴德,
只会把彼此逼上不痛快的绝路诉说自己的过去,你以为博取的是同情,其实收获的是讥笑,
诉说的是苦楚,展示的是无能。情绪被外界左右,正是因为自己心中易燃的东西。
对自己不自信的人才会在意别人的看法,,活着若是为了取悦别人,等于没有个人所在价值。
越缺爱的人越容易爱上别人。永远不要为了谁奋斗,也不要为了谁做某件事,
如果出发点是自己,何必对他人道德绑架。