梅森(Mason)ry-AutoLayout的首次使用体验

信阳行程汇总

图片 1

     人士:4人(三哥表妹二妹我)

– (id)initWithFrame:(CGRect)frame{

    self = [super initWithFrame:frame];

    if(self){

          self.backgroundColor = [UIColor clearColor];

         WS(weakSelf);

         _scrollContentView = [[UIScrollView alloc]
initWithFrame:self.bounds];

         _scrollContentView.backgroundColor = [UIColor
clearColor];

         [self addSubview:_scrollContentView];

         [_scrollContentView
mas_makeConstraints:^(MASConstraintMaker *make) {

              //重点来了,scrollview 须求跟当前 view 一边大

              make.edges.equalTo(weakSelf);

         }];

         __weak UIScrollView *weakScroll = _scrollContentView;

         _pieView = [[UIView alloc] initWithFrame:self.bounds];

         _pieView.backgroundColor = [UIColor clearColor];

         [_scrollContentView addSubview:_pieView];

         [_pieView mas_makeConstraints:^(MASConstraintMaker *make)
{

              //饼图中央点 X 值要跟 scrollview 一样,底部要在
scrollview 上留出kMarginY大小的偏离

              make.centerX.equalTo(weakScroll.centerX);

             
make.top.equalTo(weakScroll.top).with.offset(kMarginY);

         }];

         __weak UIView *weakPie = _pieView;

         _infoView = [[UIView alloc]
initWithFrame:self.bounds];

         _infoView.backgroundColor = [UIColor whiteColor];

         [_scrollContentView addSubview:_infoView];

         [_infoView mas_makeConstraints:^(MASConstraintMaker
*make) {

              //白色音讯图的主导点 X 值 Y 值都要跟饼图一样

              make.centerX.equalTo(weakPie.centerX);

              make.centerY.equalTo(weakPie.centerY);

         }];

         _descriptionView = [[UIView alloc]
initWithFrame:self.bounds];

         _descriptionView.backgroundColor = [UIColor clearColor];

         [_scrollContentView addSubview:_descriptionView];

         [_descriptionView mas_makeConstraints:^(MASConstraintMaker
*make) {

              //颜色表明 view 的涨幅要跟 scrollview
一样,尾部要在饼图底部距离kPieDesSpace的义务

              make.width.equalTo(weakScroll);

             
make.top.equalTo(weakPie.bottom).with.offset(kPieDesSpace);

         }];

   }

    return self;

}

-(void)setFrame:(CGRect)frame{

    [super setFrame:frame];

    self.pieRadius = MIN(self.bounds.size.width/2,
self.bounds.size.height/2) – kMarginX*2;

    _animationArr = [NSMutableArray array];

    self.textRadius = _pieRadius – (_pieRadius-kInfoRadius)/2;

    //注意这里运用的是
update,因为自己从前已经对她们设置过约束,我只是想添加新的封锁,假如依然用make
的话之前的兼具约束都会失效,即便用 remake
的话就是把前边的相应约束替换掉。因为自身现在早就精通 frame
了,现在本身得以将她们的大大小小举行封锁了

    [_pieView updateConstraints:^(MASConstraintMaker *make) {

         make.size.mas_equalTo(CGSizeMake(_pieRadius*2,
_pieRadius*2));

    }];

    [_infoView updateConstraints:^(MASConstraintMaker *make) {

         make.size.mas_equalTo(CGSizeMake(kInfoRadius *2,
kInfoRadius *2));

    }];

}

– (void)setPieRadius:(CGFloat)pieRadius{

    _pieRadius = pieRadius;

    [_pieView.layer setCornerRadius:_pieRadius];

    [_infoView.layer setCornerRadius:kInfoRadius];

}

1.旅行前准备篇

     
以上是本人排的4日总行程,基本涵盖了秦皇岛大部的山水。由此次是4人行,好歹也得以叫一个小团了呢!三弟表妹也是第一遍跟大家自由行,希望她们玩的多点,欣赏的也多点。

     
 亲们,千万不要小瞧我们那团,分工明细啊,我是中将,负责所有行程布置、机票以及酒店预约;堂妹是会计兼导游,负责旅行中各景点门票、滴滴打车、吃饭买单、机票领取、记账、身份证管理等;堂弟堂妹就是VIP客户啊,大家的上帝呀,一定要服务好哎!

     
 先说说订机票和酒吧,以及选景点。指出我们手机上多下七款旅行APP(如蚂蜂窝,飞猪,途牛,去什么地方,驴二姨等)。

     
 关于机票,我只能放假4天,综合大家的小时,就规定了四月27日—10月30日4天,接下去就找7月26日6点未来去的航班以及10月30日晚上回的航班,找到最大性价比组合的。

     
 关于旅舍,先在蚂蜂窝上多看看旁人去上饶的游记,把精美国首都记下来,然后度娘驾驭一下珠海的地图,看看银川有哪几大湾(闻名的),以机场为原点,从近到远或者从远及近,先排出来。如机场——德阳湾——大南海——亚龙湾——海棠湾

先看看这几大湾内部有何样景点,都先记下来,再依照呆的时辰长短(我们不得不去4天)综合选好旅社(指出选2个旅舍),因而我选的2个饭馆一个在广陵湾(阳光大饭店),一个在海棠湾(御海棠豪华度假饭馆)。

关于景点,再按照选好的小吃摊,选出最急需去的风景,以阳光大酒店为圆点,规划2天行程,再根据御海棠酒店为圆点规划2天行程。

那是一个饼图的控件:

     天数:5天4晚(精确点就4个白天4个上午)

噢噢太震撼了忘记了总括

     
有时候去一座都市旅行,不自然要安插很久,也许就那么说话坐在大巴上看了看某旅行APP,也许依旧那五人,也许最后就改为三个人行了,so
 easy!

好啊,其实这些复制粘贴代码这么难用我或者持之以恒开头动一行一行复制粘贴下来空格敲的这么完美,都是因为我的好爱人在帮自己摘我最喜爱吃的樱桃准备给自己寄过来!我情不自尽哼起歌来~一想开那呀~就让我喜欢~贴一张图馋馋你们哈哈哈!

2.每日行程细说篇

        十二月26日就没怎么好说的了。入住休息。

       
第一天(1月27日)行程看起来依然很满的,一个白天要去3个地方。可是我们沟通了接机的师傅,前一天接机的中途聊了一晃,一天300元,跟我们一天,大家进景区,他在外边等着,平昔到吃完饭送大家回饭店,4个人算下来照旧很合算的,所以放心大胆的玩呗。

九月27日清早起床,掀开窗帘看到前方的大洋,那心境真的激动啊,第两遍看见大海啊!直接上图啊!阳光大饭店的180度海景房,确实很美!

酒吧海景

第一站先去南山文化区,也就是南山寺,首当其冲要看的就是那尊海上观世音,我没拍大佛全景照,网上找了一张,借用一下哟!

海上观世音菩萨

     
 海上观世音菩萨总共三面,每一面观世音手中所持之物都不相同的,正面是“持箧观世音菩萨”,右面是“持珠观世音”,左面是“持莲观世音”,分别寓意着“智慧、慈悲、和平”。观世音菩萨足下的芙蓉宝座,也是非常迷你的高十米,共四层,每层有形状相同的二十七瓣莲花,共一百零八瓣,也是由全钛合金打造。

       
据说,从前磨难很多,诸如台风水灾,从海上观世音菩萨建成后,患难少了许多,所以大家对海上观世音菩萨都很爱抚啊。据说在青海衡阳凤凰机场起降的航班,都会在黄海观世音菩萨上空绕一圈,提出我们坐在飞机右边,可以看看。我是夜里到的,没留意啊!

咱俩爬到4层,看到的青山绿水仍旧很美啊!我光顾欣赏了,没拍啊,我们网上去搜搜啊!不过有一张依旧蛮有意思的,那就是风传中的抱佛脚呢!

抱佛脚

咱俩任重先生而道远去了海上观世音菩萨,其他都是坐浏览车逛的。

下午在南山寺里边吃的斋饭,还不易,做出来的事物都很逼真的

吃素

中午去了天涯海角,大概逛了2.3刻钟,因为定了衡阳千古情6点的表演门票。

湖州千古情景区,主要看了演艺是1小时,因为事先在临汾看过泰安身故情,看了商丘死亡情,觉得仍旧很有风味的。推荐咱们去看望啊,照片就不上了。

约莫到夜里7点半出来,司机接大家去吃海鲜大餐,没有去大家都推荐的率先市面,而是去了下岗职工海鲜市场,司机师傅跟我们联合去挑的海鲜,一起找的加工,海鲜很不利,也不贵,可是海鲜加工价都赶得香港(Hong Kong)鲜价了!

夜里9点半回饭馆,后天路途是完了,还有一件事,今日是表弟的风水,感谢万能的外卖,10点多就抓好一个蛋糕送到到酒楼了,在酒家泳池处过了一个很难忘的寿辰!

其次日(十月28日)照旧叫的车跟一天,睡到7点半起床,打包行李,去吃饭店提供的早餐,早餐很好,然后起身去亚龙湾热带森林公园,非诚勿扰2的拍摄地。

山头风景很美,手机拍不出那种效果啊,凑合看看啊,下回出门真要考虑买个正经相机了。上午在险峰吃的自租餐,都含在门票,电瓶车,傍晚饭,过索桥里面了,还没经济的。

   
上午2点多钟,去了南田温泉,南田温泉是我国最大的室外温泉,被誉为“神州第一泉”。

南田温泉依山傍水,属低温温热矿水,水温56℃,矿化度很高。温泉含有多种对身体有利的矿物质和微量元素。那种温泉水可以舒筋活络,对人体多种病症有格外的拉扯疗效,带给体验者强身健体的当然享受。南田温泉共有34个温泉池,包涵小鱼温泉等,分布在天然椰林中,一池一景。

     
 第两回秋季泡温泉,有的泉温度都不高哦,小鱼温泉很有意思的,有成百上千老外在内部泡温泉,我哥腿珠海痒的洋洋痕迹,都红了,有点吓人啊!泡了那里的温泉,第二天看腿上,只有浅色痕迹了,看来仍旧有点用的呀,什么枸杞温泉,中药温泉都足以泡泡,还有一个推浪温泉吧,也蛮有意思的。同志们,温泉也不当久泡,泡十几分钟就起来,我们在温泉区呆到5点多。然后就去海棠湾大商旅。

留神啊,岳阳的酒楼都是12点交房,早上3点才能入住的,俺们基本上5点半到的,海棠湾御海棠豪华度假饭店,我肯定要点个赞,服务越发好,还有商旅房间更加大,大家入住的是望海阁。拍的是大床房的肖像啊,具体大家可以去网站上搜搜一下这家旅社。

夜晚大概逛了一晃商旅,点了外卖海鲜,洗洗睡啊。这么理想的酒吧,这么nice的房间,做个美好的梦啊!

     
 第八日也就是十月29日去了蜈支洲岛,酒馆离海棠湾依然很近的,早晨大家叫了滴滴到码头,坐船上了岛,那几个岛海水更加绝望,可以各样潜水项目。也是私人订制的拍摄地,具体大家百度时而呀!

大家并未玩项目,随意地逛逛小岛,小岛上每一处都是风光,最记得的就是那沙滩上的海水,太彻底了。假使自己一个人,就好像此在近海呆一天也是好的。

       
大家一直呆到早上1点多离岛,接下去去了海棠湾免税购物为主,亲,千万不要低估女子的购买力,更何况我们中间还有个购物狂,原定去免税店逛逛1.2钟头就回酒馆,结果就在化妆品区至少呆了4个多小时,连我都不准备买东西的人,都买了一只口红,一盒气垫BB霜,后来自我真站不下来了,太累了,跟自家哥去休息区休息,其它五个人还在化妆区奋战啊!太吓人了!

       
在那边尤其要提一下免税中央的策略,大家是入住的那天联系饭馆做好登记,旅社会把记录报给免税中央,去购物会有一个9.5折优惠,须求超前一天的15:00前和酒吧礼宾部预定,有一个金额限制的,一张身份证限额是15000元,化妆品类是不可以跨越12件的,我们报了名了两张身份证。去免税店买了化妆品后,是不可以直接拿走的,(也有即购即提,好像交担保金什么的,大家是一向去机场取的)他们会跟你保存,直接送到机场,等您离开沧州那天,去了机场过了安检后平素去免税物品提取处上飞机的。 

夜晚回旅舍,真是一点都不想动了,化妆品区的人最多了,更加是一些大牌,如路易威登,赫莲娜,兰蔻,女子的购买力真是无法小视啊!

     
 十二月30日,哎,真快啊!最终一天了呀,中午吃了旅馆的自助早餐,把酒楼卓越逛了逛,因为我们住的小吃摊和隔壁的喜来登酒店都属于喜达屋旗下的,商旅设施都是公共的。酒馆的知心人海滩更加大,海棠湾的近海浪越发大,不适合游泳,不过看着一浪一浪的海水过来越发舒服,热情洋溢。哪个人叫自己是没见过大海的人啊!废话不多说,直接上照片!

我们住的望海阁

       
收拾收拾行李,回家了啊,旅舍有免费大巴送我们到机场,真恩爱,大家是早上4点飞机,坐的是1点10分的大巴,到了飞机场,取票,进安检,拿化妆品,上飞机,真是一气呵成,中间都没浪费时间的,至此,此次高规格的呼和浩特自由行,四处停止了。

     
 我的感想就是岁月太短了,广陵的确符合每年都去一趟的地点,找个靠海的小吃摊,啥事也不干,看看海,躺在濒海的椅子上,那生活过的多看中啊!
                                                      

      所以回去可以赚钱,来年再见,咸阳!

那就是说现在自我在 pie 里就必要改了:

     
来来来,各位搬来小板凳,初叶此次珠海行的追忆,希望要去的都能吸取点精华。

那就是说现在自家要做的就是让 pie 里面的一对控件也 autoLayout,不过自己或者需求把
view 的 frame 告诉 pie,因为自身本来有一个逻辑是急需取frame
宽高纤维值来作为饼图的直径的,真恼人,那么大家就应该想办法告诉 pie
我前几日的 frame 是多大,你再来做相应调整。好呢,我先来打招呼 pie:

WS(weakSelf);

_pie = [[PieChart alloc] initWithFrame:CGRectZero];

_pie.dataSource = self;

[self.view addSubview:_pie];

[_pie mas_makeConstraints:^(MASConstraintMaker *make) {

    make.edges.equalTo(weakSelf.view);

}];

经过 initWithFrame 起始化控件的时候传进来的 frame
计算饼图的半径,按照总计出来的半径确定各种 view 的摆放地点:

而我对 梅森(Mason)ry
最初的认识是透过那篇小说:梅森ry介绍与行使举行:神速上手Autolayout –
 CocoaChina 苹果支付汉语站 – 最热的酷派开发社区 最热的苹果开发社区
最热的GALAXY Tab开发社区
,并且我发觉网络上流传的一大半关于
Masonry 的篇章基本都来自于此,所以如若您对 Masonry
一点打听都尚未,那篇小说确实是很不利的。

首先简单介绍一下 梅森(Mason)ry,梅森(Mason)ry
是一款能够让开发者十分不难拔取iOS的电动布局(AutoLayout)机制。Masonry提供更为完善、友好的API来顶替间接行使NSLayoutConstraint举行编程,能够使视图布局的长河更是轻松。(好吧我认可这句话是我拷贝过来的,那不是关键)

就像您看到的,我在初叶化的时候并从未付诸一个永恒好的得力的
frame,而是加了一句约束原则,这一句话的意味就是 pie 的分寸要跟当前的
view 一样大,是的,这一切都是自动的。

事实上一初步用autolayout我是拒绝的,想到要xb、sb还有法定那么繁琐的言辞喔喔还有相当看不懂的象形文字我就全身脑袋疼!可是现在有了那般方便的Masonry,就学来用用吧,毕竟苹果的显示器大小已经起来不一致等了,用一个恋人的话来说,autolayout是趋势。不管如何,明白下再而三好的

假使你的品种中还并未 Masonry,你可以经过第三方管理平台 Cocoapods
来下载,若是有趣味的话,可以看一下自家事先整理的关于 Cocoapods
下载与安装的稿子: IOS敬重管理 –
CocoaPods
.

-(void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

    _pie.frame = self.view.bounds;

}

以前的代码是如此的:

从上边的代码,你应当能收看代码原来的逻辑顺序,那样处理代码的目标就是经过在初始化那个控件的时候就按照给定的
frame
宽高取最小值作为饼图的直径,进而确定饼图以及白色新闻图的frame,不过前提我刚说了,一切都建立在
frame 是一个交给的固定值的根底上的。我如此说你可能会觉得意外,frame
本来就是一个定点好的恰到好处的CGRect 啊什么鬼啊是或不是神经啊
那么如何动静下您并不知道 frame
到底是稍微吧?那就是自个儿在伊始化这么些控件的时候也用了
AutoLayout,也就是说我在上一个界面就是通过自律来治本那些控件的布局,那么我只须要加以约束规范就好并不须求传一个稳定的值来给那么些控件,像这么:

自我曾经不想再说什么啊,那几个代码为毛只可以一行一行的复制粘贴进去啊!并且我的空格怎么都有失了呀!我是手动的敲的那几个空格啊!!手都快抽筋了哟啊啊!!!

早期都铺垫完了,接下去大家就看看自己是何等把原先可以的代码改成了
Autolayout 的美丽的代码的了

– (id)initWithFrame:(CGRect)frame{

    self = [super initWithFrame:frame];

    if(self){

         self.backgroundColor = [UIColor clearColor];

         //UIScollView 容器

         _scrollContentView = [[UIScrollView alloc]
initWithFrame:self.bounds];

         _scrollContentView.backgroundColor = [UIColor clearColor];

         [self addSubview:_scrollContentView];

         //饼图

         _pieView = [[UIView alloc] initWithFrame:self.bounds];

         _pieView.backgroundColor = [UIColor clearColor];

         [_scrollContentView addSubview:_pieView];

         //饼图中心白色音信区域

         _infoView = [[UIView alloc] initWithFrame:self.bounds];

         _infoView.backgroundColor = [UIColor whiteColor];

         [_scrollContentView addSubview:_infoView];

         //颜色表达

         _descriptionView = [[UIView alloc]
initWithFrame:self.bounds];

         _descriptionView.backgroundColor = [UIColor clearColor];

         [_scrollContentView addSubview:_descriptionView];

         //统计饼图半径

         self.pieRadius = MIN(self.bounds.size.width/2,
self.bounds.size.height/2) – kMarginX*2;

         self.pieCenter = CGPointMake(self.bounds.size.width/2,
_pieRadius + kMarginY);

         _animationArr = [NSMutableArray array];

         self.textRadius = _pieRadius –
(_pieRadius-kInfoRadius)/2;

         }

    return self;

}

– (void)setPieCenter:(CGPoint)pieCenter{

    [_pieView setCenter:pieCenter];

    [_infoView setCenter:pieCenter];

    //这几个点是有益用来在饼图上面画扇叶用的,是以饼图为条件的主旨值

    _pieCenter = CGPointMake(_pieView.frame.size.width/2,
_pieView.frame.size.height/2);

}

– (void)setPieRadius:(CGFloat)pieRadius{

    _pieRadius = pieRadius;

    CGRect frame = CGRectMake(_pieCenter.x – pieRadius, _pieCenter.y

  • pieRadius, pieRadius*2, pieRadius*2);

    _pieCenter = CGPointMake(frame.size.width/2,frame.size.height/2);

    //设置饼图 frame

    [_pieView setFrame:frame];

    [_pieView.layer setCornerRadius:_pieRadius];

    CGFloat infoRadius = kInfoRadius;

    frame = CGRectMake(_pieCenter.x – infoRadius, _pieCenter.y –
infoRadius, infoRadius*2, infoRadius*2);

    //设置白色音讯图 frame

    [_infoView setFrame:frame];

    [_infoView.layer setCornerRadius:infoRadius];

}

初始自己曾有两回专门查阅过 AutoLayout
的连带材料,好吧其实就是有的牛牛在投机的博客公布的选择教程及部分心得。一向都想着试一下可是一向没有何样日子来执行,那篇小说主要说的是自个儿是何等将
Masonry 移植到原有代码中。

图片 2

完成。

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注