日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

代码约束2

發布時間:2025/3/13 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代码约束2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Masonry是一個輕量級的布局框架,擁有自己的描述語法,采用更優雅的鏈式語法封裝自動布局,簡潔明了并具有高可讀性,而且同時支持 iOS 和 Max OS X。Masonry是一個用代碼寫iOS或OS界面的庫,可以代替Auto layout。Masonry的github地址:https://github.com/SnapKit/Masonry

本章內容

- Masonry配置?

- Masonry使用?

- Masonry實例?

Masonry配置

- 推薦使用pods方式引入類庫,pod 'Masonry',若不知道pod如何使用,情況我的另一篇文章: 提高ios開發效率的工具?

- 引入頭文件 #import "Masonry.h"?

Masonry使用講解

mas_makeConstraints 是給view添加約束,約束有幾種,分別是邊距,寬,高,左上右下距離,基準線。添加過約束后可以有修正,修正有offset(位移)修正和multipliedBy(倍率)修正。?

語法一般是 make.equalTo or make.greaterThanOrEqualTo or make.lessThanOrEqualTo + 倍數和位移修正。?

注意點1: 使用 mas_makeConstraints方法的元素必須事先添加到父元素的中,例如[self.view addSubview:view];?

注意點2: masequalTo 和 equalTo 區別:masequalTo 比equalTo多了類型轉換操作,一般來說,大多數時候兩個方法都是 通用的,但是對于數值元素使用mas_equalTo。對于對象或是多個屬性的處理,使用equalTo。特別是多個屬性時,必須使用equalTo,例如 make.left.and.right.equalTo(self.view);?

注意點3: 注意到方法with和and,這連個方法其實沒有做任何操作,方法只是返回對象本身,這這個方法的左右完全是為了方法寫的時候的可讀性 。make.left.and.right.equalTo(self.view);和make.left.right.equalTo(self.view);是完全一樣的,但是明顯的加了and方法的語句可讀性 更好點。?

Masonry初級使用例子?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 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 //?exp1:?中心點與self.view相同,寬度為400*400 -(void)exp1{ ????UIView?*view?=?[UIView?new]; ????[view?setBackgroundColor:[UIColor?redColor]]; ????[self.view?addSubview:view]; ????[view?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ?????????make.center.equalTo(self.view); ?????????make.size.mas_equalTo(CGSizeMake(400,400)); ????}]; } //exp2:?上下左右邊距都為10 -(void)exp2{ ????UIView?*view?=?[UIView?new]; ????[view?setBackgroundColor:[UIColor?redColor]]; ????[self.view?addSubview:view]; ????[view?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.edges.equalTo(self.view).with.insets(UIEdgeInsetsMake(10,?10,?10,?10)); ????????//??make.left.equalTo(self.view).with.offset(10); ????????//??make.right.equalTo(self.view).with.offset(-10); ????????//??make.top.equalTo(self.view).with.offset(10); ????????//??make.bottom.equalTo(self.view).with.offset(-10); ????}]; } //exp3?讓兩個高度為150的view垂直居中且等寬且等間隔排列?間隔為10 -(void)exp3{ ????UIView?*view1?=?[UIView?new]; ????[view1?setBackgroundColor:[UIColor?redColor]]; ????[self.view?addSubview:view1]; ????UIView?*view2?=?[UIView?new]; ????[view2?setBackgroundColor:[UIColor?redColor]]; ????[self.view?addSubview:view2]; ????[view1?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.centerY.mas_equalTo(self.view.mas_centerY); ????????make.height.mas_equalTo(150); ????????make.width.mas_equalTo(view2.mas_width); ????????make.left.mas_equalTo(self.view.mas_left).with.offset(10); ????????make.right.mas_equalTo(view2.mas_left).offset(-10); ????}]; ????[view2?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.centerY.mas_equalTo(self.view.mas_centerY); ????????make.height.mas_equalTo(150); ????????make.width.mas_equalTo(view1.mas_width); ????????make.left.mas_equalTo(view1.mas_right).with.offset(10); ????????make.right.equalTo(self.view.mas_right).offset(-10); ????}]; }

Masonry高級使用例子1

iOS計算器使用Masorny布局:?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 //高級布局練習?ios自帶計算器布局 -(void)exp4{ ????//申明區域,displayView是顯示區域,keyboardView是鍵盤區域 ????UIView?*displayView?=?[UIView?new]; ????[displayView?setBackgroundColor:[UIColor?blackColor]]; ????[self.view?addSubview:displayView]; ????UIView?*keyboardView?=?[UIView?new]; ????[self.view?addSubview:keyboardView]; ????//先按1:3分割?displView(顯示結果區域)和?keyboardView(鍵盤區域) ????[displayView?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.top.equalTo(self.view.mas_top); ????????make.left.and.right.equalTo(self.view); ????????make.height.equalTo(keyboardView).multipliedBy(0.3f); ????}]; ????[keyboardView?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.top.equalTo(displayView.mas_bottom); ????????make.bottom.equalTo(self.view.mas_bottom); ????????make.left.and.right.equalTo(self.view); ????}]; ????//設置顯示位置的數字為0 ????UILabel?*displayNum?=?[[UILabel?alloc]init]; ????[displayView?addSubview:displayNum]; ????displayNum.text?=?@"0"; ????displayNum.font?=?[UIFont?fontWithName:@"HeiTi?SC"?size:70]; ????displayNum.textColor?=?[UIColor?whiteColor]; ????displayNum.textAlignment?=?NSTextAlignmentRight; ????[displayNum?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.left.and.right.equalTo(displayView).with.offset(-10); ????????make.bottom.equalTo(displayView).with.offset(-10); ????}]; ????//定義鍵盤鍵名稱,?號代表合并的單元格 ????NSArray?*keys?=?@[@"AC",@"+/-",@"%",@"÷" ?????????????????????,@"7",@"8",@"9",@"x" ?????????????????????,@"4",@"5",@"6",@"-" ?????????????????????,@"1",@"2",@"3",@"+" ?????????????????????,@"0",@"?",@".",@"="]; ????int?indexOfKeys?=?0; ????for?(NSString?*key?in?keys){ ????????//循環所有鍵 ????????indexOfKeys++; ????????int?rowNum?=?indexOfKeys?%4?==0??indexOfKeys/4:indexOfKeys/4?+1; ????????int?colNum?=?indexOfKeys?%4?==0??4?:indexOfKeys?%4; ????????NSLog(@"index?is:%d?and?row:%d,col:%d",indexOfKeys,rowNum,colNum); ????????//鍵樣式 ????????UIButton?*keyView?=?[UIButton?buttonWithType:UIButtonTypeCustom]; ????????[keyboardView?addSubview:keyView]; ????????[keyView?setTitleColor:[UIColor?blackColor]?forState:UIControlStateNormal]; ????????[keyView?setTitle:key?forState:UIControlStateNormal]; ????????[keyView.layer?setBorderWidth:1]; ????????[keyView.layer?setBorderColor:[[UIColor?blackColor]CGColor]]; ????????[keyView.titleLabel?setFont:[UIFont?fontWithName:@"Arial-BoldItalicMT"?size:30]]; ????????//鍵約束 ????????[keyView?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????????//處理?0?合并單元格 ????????????if([key?isEqualToString:@"0"]?||?[key?isEqualToString:@"?"]?){ ????????????????if([key?isEqualToString:@"0"]){ ????????????????????[keyView?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????????????????????make.height.equalTo(keyboardView.mas_height).with.multipliedBy(.2f); ????????????????????????make.width.equalTo(keyboardView.mas_width).multipliedBy(.5); ????????????????????????make.left.equalTo(keyboardView.mas_left); ????????????????????????make.baseline.equalTo(keyboardView.mas_baseline).with.multipliedBy(.9f); ????????????????????}]; ????????????????}if([key?isEqualToString:@"?"]){ ????????????????????[keyView?removeFromSuperview]; ????????????????} ????????????} ????????????//正常的單元格 ????????????else{ ????????????????make.width.equalTo(keyboardView.mas_width).with.multipliedBy(.25f); ????????????????make.height.equalTo(keyboardView.mas_height).with.multipliedBy(.2f); ????????????????//按照行和列添加約束,這里添加行約束 ????????????????switch?(rowNum)?{ ????????????????????case?1: ????????????????????{ ????????????????????????make.baseline.equalTo(keyboardView.mas_baseline).with.multipliedBy(.1f); ????????????????????????keyView.backgroundColor?=?[UIColor?colorWithRed:205?green:205?blue:205?alpha:1]; ????????????????????} ????????????????????????break; ????????????????????case?2: ????????????????????{ ????????????????????????make.baseline.equalTo(keyboardView.mas_baseline).with.multipliedBy(.3f); ????????????????????} ????????????????????????break; ????????????????????case?3: ????????????????????{ ????????????????????????make.baseline.equalTo(keyboardView.mas_baseline).with.multipliedBy(.5f); ????????????????????} ????????????????????????break; ????????????????????case?4: ????????????????????{ ????????????????????????make.baseline.equalTo(keyboardView.mas_baseline).with.multipliedBy(.7f); ????????????????????} ????????????????????????break; ????????????????????case?5: ????????????????????{ ????????????????????????make.baseline.equalTo(keyboardView.mas_baseline).with.multipliedBy(.9f); ????????????????????} ????????????????????????break; ????????????????????default: ????????????????????????break; ????????????????} ????????????????//按照行和列添加約束,這里添加列約束 ????????????????switch?(colNum)?{ ????????????????????case?1: ????????????????????{ ????????????????????????make.left.equalTo(keyboardView.mas_left); ????????????????????} ????????????????????????break; ????????????????????case?2: ????????????????????{ ????????????????????????make.right.equalTo(keyboardView.mas_centerX); ????????????????????} ????????????????????????break; ????????????????????case?3: ????????????????????{ ????????????????????????make.left.equalTo(keyboardView.mas_centerX); ????????????????????} ????????????????????????break; ????????????????????case?4: ????????????????????{ ????????????????????????make.right.equalTo(keyboardView.mas_right); ????????????????????????[keyView?setBackgroundColor:[UIColor?colorWithRed:243?green:127?blue:38?alpha:1]]; ????????????????????} ????????????????????????break; ????????????????????default: ????????????????????????break; ????????????????} ????????????} ????????}]; ????} }

本例子使用的baseline去控制高度位置,這似乎不是太準,如果想要精準控制高度位置,可以使用一行一行添加的方法,每次當前行的top去equelTo上一行的bottom。 給個提示:?

1 2 3 4 for(遍歷所有行) ????for(遍歷所以列) ????//當前行約束根據上一行去設置 ????......

下一個例子中,使用上面類似的方法?

Masonry高級使用例子2

根據設計圖,使用masonry布局:?

步驟1?

步驟2??

步驟1?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 ?-(void)createUI{ ????UIView?*titleView?=?[UIView?new]; ????titleView.backgroundColor?=?[UIColor?redColor]; ????UIView?*caredView?=?[UIView?new]; ????[self.view?addSubview:caredView]; ????UIView?*brifeView?=?[UIView?new]; ????[self.view?addSubview:brifeView]; ????//self.view ????self.view.backgroundColor?=?[UIColor?colorWithWhite:0.965?alpha:1.000]; ????//thrm ????UIImageView?*plantThrm?=?[[UIImageView?alloc]initWithImage:[UIImage?imageNamed:@"defalutPlantReferenceIcon"]]; ????[self.view?addSubview:plantThrm]; ????[plantThrm?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.left.and.top.equalTo(self.view).with.offset(10); ????}]; ????//title ???????[self.view?addSubview:titleView]; ???????UIImageView?*bgTitleView?=?[[UIImageView?alloc]initWithImage:[UIImage?imageNamed:@"bg-plant-reference-title"]]; ????[titleView?addSubview:bgTitleView]; ????[titleView?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.right.equalTo(self.view.mas_right); ????????make.left.equalTo(plantThrm.mas_right).with.offset(20); ????????make.centerY.equalTo(plantThrm.mas_centerY); ???}]; ????[bgTitleView?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.edges.equalTo(titleView); ????}]; ????UILabel?*title?=?[[UILabel?alloc]init]; ????title.textColor?=??[UIColor?whiteColor]; ????title.font?=?[UIFont?fontWithName:@"Heiti?SC"?size:26]; ????title.text?=?_reference.name; ????[titleView?addSubview:title]; ????[title?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.left.equalTo(titleView.mas_left).offset(10); ????????make.width.equalTo(titleView.mas_width); ????????make.centerY.equalTo(titleView.mas_centerY); ????}]; ????//植物養護 ????UILabel?*caredTitle?=?[[UILabel?alloc]init]; ????caredTitle.textColor?=??[UIColor?colorWithRed:0.172?green:0.171?blue:0.219?alpha:1.000]; ????caredTitle.font?=?[UIFont?fontWithName:@"Heiti?SC"?size:10]; ????caredTitle.text?=?@"植物養護"; ????[self.view?addSubview:caredTitle]; ????[caredTitle?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.top.equalTo(plantThrm.mas_bottom).with.offset(20); ????????make.left.and.right.equalTo(self.view).with.offset(10); ????????make.height.mas_equalTo(10); ????}]; ????//將圖層的邊框設置為圓腳 ????caredView.layer.cornerRadius?=?5; ????caredView.layer.masksToBounds?=?YES; ????//給圖層添加一個有色邊框 ????caredView.layer.borderWidth?=?1; ????caredView.layer.borderColor?=?[[UIColor?colorWithWhite:0.521?alpha:1.000]?CGColor]; ????caredView.backgroundColor?=?[UIColor?whiteColor]; ????[caredView?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.top.equalTo(caredTitle.mas_bottom).with.offset(5); ????????make.left.equalTo(self.view.mas_left).with.offset(10); ????????make.right.equalTo(self.view.mas_right).with.offset(-10); ????????make.height.equalTo(brifeView); ????}]; ????//植物簡介 ????UILabel?*brifeTitle?=?[[UILabel?alloc]init]; ????brifeTitle.textColor?=??[UIColor?colorWithRed:0.172?green:0.171?blue:0.219?alpha:1.000]; ????brifeTitle.font?=?[UIFont?fontWithName:@"Heiti?SC"?size:10]; ????brifeTitle.text?=?@"植物簡介"; ????[self.view?addSubview:brifeTitle]; ????[brifeTitle?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.top.equalTo(caredView.mas_bottom).with.offset(20); ????????make.left.and.right.equalTo(self.view).with.offset(10); ????????make.height.mas_equalTo(10); ????}]; ????//將圖層的邊框設置為圓腳 ????brifeView.layer.cornerRadius?=?5; ????brifeView.layer.masksToBounds?=?YES; ????//給圖層添加一個有色邊框 ????brifeView.layer.borderWidth?=?1; ????brifeView.layer.borderColor?=?[[UIColor?colorWithWhite:0.521?alpha:1.000]?CGColor]; ????brifeView.backgroundColor?=?[UIColor?whiteColor]; ????[brifeView?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.top.equalTo(brifeTitle.mas_bottom).with.offset(5); ????????make.left.equalTo(self.view.mas_left).with.offset(10); ????????make.right.equalTo(self.view.mas_right).with.offset(-10); ????????make.bottom.equalTo(self.view.mas_bottom).with.offset(-10); ????????make.height.equalTo(caredView); ????}]; }

完成之后如下圖 步驟1?

步驟2,在上面的基礎上,增加植物養護部分ui構造的代碼,思想是,先構造出四行,然后根據每行單獨構造出行樣式。?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 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 54 //把塊拆分為四行 -(void)createIndexUIWithView:(UIView?*)view{ ????//拆分四行 ????UIView?*row1?=?[UIView?new]; ????UIView?*row2?=?[UIView?new]; ????UIView?*row3?=?[UIView?new]; ????UIView?*row4?=?[UIView?new]; ????[view?addSubview:row1]; ????[view?addSubview:row2]; ????[view?addSubview:row3]; ????[view?addSubview:row4]; ????[row1?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.right.and.left.equalTo(view); ????????make.height.equalTo(view.mas_height).multipliedBy(0.25); ????????make.top.equalTo(view.mas_top); ????}]; ????[row2?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.right.and.left.equalTo(view); ????????make.top.equalTo(row1.mas_bottom); ????????make.height.equalTo(view.mas_height).multipliedBy(0.25); ????}]; ????[row3?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.right.equalTo(view.mas_right); ????????make.top.equalTo(row2.mas_bottom); ????????make.height.equalTo(view.mas_height).multipliedBy(0.25); ????????make.left.equalTo(view.mas_left); ????}]; ????[row4?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.right.and.left.equalTo(view); ????????make.top.equalTo(row3.mas_bottom); ????????make.height.equalTo(view.mas_height).multipliedBy(0.25); ????}]; ????[self?createIndexRowUI:PlantReferenceWaterIndex?withUIView:row1]; ????[self?createIndexRowUI:PlantReferenceSumIndex?withUIView:row2]; ????[self?createIndexRowUI:PlantReferenceTemperatureIndex?withUIView:row3]; ????[self?createIndexRowUI:PlantReferenceElectrolyteIndex?withUIView:row4]; } //構造每行的UI -(void)createIndexRowUI:(PlantReferenceIndex)?index?withUIView:(UIView?*)view{ ????//index標題 ????UILabel?*indexTitle?=?[UILabel?new]; ????indexTitle.font?=?[UIFont?fontWithName:@"HeiTi?SC"?size:14]; ????indexTitle.textColor?=?[UIColor?colorWithWhite:0.326?alpha:1.000]; ????[view?addSubview:indexTitle]; ????[indexTitle?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.left.equalTo(view.mas_left).with.offset(20); ????????make.centerY.equalTo(view.mas_centerY); ????}]; ????switch?(index)?{ ????????case?PlantReferenceWaterIndex: ????????{ ????????????indexTitle.text?=?@"水分"; ????????????UIImageView?*?current; ????????????for(int?i=1;i<=5;i++){ ????????????????if(i<_reference.waterIndex){ ????????????????????current?=?[[UIImageView?alloc]initWithImage:[UIImage?imageNamed:@"icon_water_light"]]; ????????????????}else{ ????????????????????current?=?[[UIImageView?alloc]initWithImage:[UIImage?imageNamed:@"icon_water_dark"]]; ????????????????} ????????????????[view?addSubview:current]; ????????????????//間距12%,左邊留空30% ????????????????[current?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????????????????make.left.equalTo(view.mas_right).with.multipliedBy(0.12*(i-1)?+0.3); ????????????????????make.centerY.equalTo(view.mas_centerY); ????????????????}]; ????????????} ????????} ??????????????break; ????????case?PlantReferenceSumIndex: ????????{ ????????????indexTitle.text?=?@"光照"; ????????????UIImageView?*?current; ????????????for(int?i=1;i<=5;i++){ ????????????????if(i<_reference.temperatureIndex){ ????????????????????current?=?[[UIImageView?alloc]initWithImage:[UIImage?imageNamed:@"icon_summer_light"]]; ????????????????}else{ ????????????????????current?=?[[UIImageView?alloc]initWithImage:[UIImage?imageNamed:@"icon_summer_dark"]]; ????????????????} ????????????????[view?addSubview:current]; ????????????????//間距12%,左邊留空30% ????????????????[current?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????????????????make.left.equalTo(view.mas_right).with.multipliedBy(0.12*(i-1)?+0.3); ????????????????????make.centerY.equalTo(view.mas_centerY); ????????????????}]; ????????????} ????????} ??????????????break; ????????case?PlantReferenceTemperatureIndex: ????????{ ????????????indexTitle.text?=?@"溫度"; ????????????UIImageView?*?current; ????????????for(int?i=1;i<=5;i++){ ????????????????if(i<_reference.sumIndex){ ????????????????????current?=?[[UIImageView?alloc]initWithImage:[UIImage?imageNamed:@"icon_temperature_light"]]; ????????????????}else{ ????????????????????current?=?[[UIImageView?alloc]initWithImage:[UIImage?imageNamed:@"icon_temperature_dark"]]; ????????????????} ????????????????[view?addSubview:current]; ????????????????//間距12%,左邊留空30% ????????????????[current?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????????????????make.left.equalTo(view.mas_right).with.multipliedBy(0.12*(i-1)?+0.3); ????????????????????make.centerY.equalTo(view.mas_centerY); ????????????????}]; ????????????} ????????} ??????????????break; ????????case?PlantReferenceElectrolyteIndex: ????????{ ????????????indexTitle.text?=?@"肥料"; ????????????UIImageView?*?current; ????????????for(int?i=1;i<=5;i++){ ????????????????if(i<_reference.electrolyteIndex){ ????????????????????current?=?[[UIImageView?alloc]initWithImage:[UIImage?imageNamed:@"icon_electolyte_light"]]; ????????????????}else{ ????????????????????current?=?[[UIImageView?alloc]initWithImage:[UIImage?imageNamed:@"icon_electolyte_dark"]]; ????????????????} ????????????????[view?addSubview:current]; ????????????????//間距12%,左邊留空30% ????????????????[current?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????????????????make.left.equalTo(view.mas_right).with.multipliedBy(0.12*(i-1)?+0.3); ????????????????????make.centerY.equalTo(view.mas_centerY); ????????????????}]; ????????????} ????????} ????????????break; ????????default: ????????????break; ????} } //在步驟1createui的基礎上,做了一些微調。 -(void)createUI{ ????self.title?=?_reference.name; ????UIView?*titleView?=?[UIView?new]; ????UIView?*caredView?=?[UIView?new]; ????[self.view?addSubview:caredView]; ????UITextView?*brifeView?=?[UITextView?new]; ????[self.view?addSubview:brifeView]; ????//self.view ????self.view.backgroundColor?=?[UIColor?colorWithWhite:0.965?alpha:1.000]; ????//thrm ????UIImageView?*plantThrm?=?[[UIImageView?alloc]initWithImage:[UIImage?imageNamed:@"defalutPlantReferenceIcon"]]; ????[self.view?addSubview:plantThrm]; ????[plantThrm?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.left.and.top.equalTo(self.view).with.offset(10); ????}]; ????//title ???????[self.view?addSubview:titleView]; ???????UIImageView?*bgTitleView?=?[[UIImageView?alloc]initWithImage:[UIImage?imageNamed:@"bg-plant-reference-title"]]; ????[titleView?addSubview:bgTitleView]; ????[titleView?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.right.equalTo(self.view.mas_right); ????????make.left.equalTo(plantThrm.mas_right).with.offset(20); ????????make.centerY.equalTo(plantThrm.mas_centerY); ???}]; ????[bgTitleView?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.edges.equalTo(titleView); ????}]; ????UILabel?*title?=?[[UILabel?alloc]init]; ????title.textColor?=??[UIColor?whiteColor]; ????title.font?=?[UIFont?fontWithName:@"Heiti?SC"?size:26]; ????title.text?=?_reference.name; ????[titleView?addSubview:title]; ????[title?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.left.equalTo(titleView.mas_left).offset(10); ????????make.width.equalTo(titleView.mas_width); ????????make.centerY.equalTo(titleView.mas_centerY); ????}]; ????//植物養護 ????UILabel?*caredTitle?=?[[UILabel?alloc]init]; ????caredTitle.textColor?=??[UIColor?colorWithRed:0.172?green:0.171?blue:0.219?alpha:1.000]; ????caredTitle.font?=?[UIFont?fontWithName:@"Heiti?SC"?size:10]; ????caredTitle.text?=?@"植物養護"; ????[self.view?addSubview:caredTitle]; ????[caredTitle?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.top.equalTo(plantThrm.mas_bottom).with.offset(20); ????????make.left.and.right.equalTo(self.view).with.offset(10); ????????make.height.mas_equalTo(10); ????}]; ????//植物養護?數據 ????[self?createIndexUIWithView:caredView]; ????//將圖層的邊框設置為圓腳 ????caredView.layer.cornerRadius?=?5; ????caredView.layer.masksToBounds?=?YES; ????//給圖層添加一個有色邊框 ????caredView.layer.borderWidth?=?1; ????caredView.layer.borderColor?=?[[UIColor?colorWithWhite:0.521?alpha:1.000]?CGColor]; ????caredView.backgroundColor?=?[UIColor?whiteColor]; ????[caredView?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.top.equalTo(caredTitle.mas_bottom).with.offset(5); ????????make.left.equalTo(self.view.mas_left).with.offset(10); ????????make.right.equalTo(self.view.mas_right).with.offset(-10); ????????make.height.equalTo(brifeView); ????}]; ????//植物簡介 ????UILabel?*brifeTitle?=?[[UILabel?alloc]init]; ????brifeTitle.textColor?=??[UIColor?colorWithRed:0.172?green:0.171?blue:0.219?alpha:1.000]; ????brifeTitle.font?=?[UIFont?fontWithName:@"Heiti?SC"?size:10]; ????brifeTitle.text?=?@"植物簡介"; ????[self.view?addSubview:brifeTitle]; ????[brifeTitle?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.top.equalTo(caredView.mas_bottom).with.offset(20); ????????make.left.and.right.equalTo(self.view).with.offset(10); ????????make.height.mas_equalTo(10); ????}]; ????//將圖層的邊框設置為圓腳 ????brifeView.layer.cornerRadius?=?5; ????brifeView.layer.masksToBounds?=?YES; ????//給圖層添加一個有色邊框 ????brifeView.layer.borderWidth?=?1; ????brifeView.layer.borderColor?=?[[UIColor?colorWithWhite:0.447?alpha:1.000]?CGColor]; ????brifeView.backgroundColor?=?[UIColor?whiteColor]; ????//文字樣式 //????brifeView.textColor?=?[UIColor?colorWithWhite:0.352?alpha:1.000]; //????brifeView.font?=?[UIFont?fontWithName:@"HeiTi?SC"?size:12]; ????NSMutableParagraphStyle?*paragraphStyle?=?[[NSMutableParagraphStyle?alloc]init]; ????paragraphStyle.lineHeightMultiple?=?20.f; ????paragraphStyle.maximumLineHeight?=?25.f; ????paragraphStyle.minimumLineHeight?=?15.f; ????paragraphStyle.alignment?=?NSTextAlignmentJustified; ????NSDictionary?*attributes?=?@{?NSFontAttributeName:[UIFont?systemFontOfSize:12],?NSParagraphStyleAttributeName:paragraphStyle,?NSForegroundColorAttributeName:[UIColor?colorWithWhite:0.447?alpha:1.000]}; ????//植物簡介數據 ????//brifeView.text?=?_reference.brief; ????brifeView.attributedText?=?[[NSAttributedString?alloc]?initWithString:?_reference.brief?attributes:attributes]; ????[brifeView?mas_makeConstraints:^(MASConstraintMaker?*make)?{ ????????make.top.equalTo(brifeTitle.mas_bottom).with.offset(5); ????????make.left.equalTo(self.view.mas_left).with.offset(10); ????????make.right.equalTo(self.view.mas_right).with.offset(-10); ????????make.bottom.equalTo(self.view.mas_bottom).with.offset(-10); ????????make.height.equalTo(caredView); ????}]; }

完成之后如下圖 步驟2?

?

轉載于:https://www.cnblogs.com/jx66/p/5153523.html

總結

以上是生活随笔為你收集整理的代码约束2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色小姐在线视频 | 亚洲精品久久久久久久久久吃药 | 禁断介护av | 亚洲欧美成人综合 | 蜜乳av 懂色av 粉嫩av | 亚洲AV无码一区二区三区性 | 大陆农村乡下av | 国产精品一区二区自拍 | 日本黄色免费 | 日韩经典在线 | 国产婷婷色一区二区 | 草女人视频 | 国产对白自拍 | 男人天堂av在线播放 | 91视频黄| 久久精品免费 | 国内福利视频 | 怡红院一区二区三区 | 久久性生活 | 女人洗澡一级特黄毛片 | 在线91视频 | 天天干夜操 | 日日噜噜夜夜狠狠久久波多野 | 黄色不卡av| 国产精品一卡二卡在线观看 | 国产麻豆免费观看 | 日韩无码精品一区二区 | 欧美亚洲一级片 | 高跟鞋av | 一级伦理农村妇女愉情 | 亚洲一卡一卡 | 欧美123区| 精品999久久久一级毛片 | 九九热视频在线免费观看 | 久久成人一区 | 亚洲视频在线观看网址 | 黄色午夜视频 | 99色国产| 欧美精品一区二区三区久久久竹菊 | 波多野吉衣久久 | 黄色网址你懂得 | av资源免费看 | 亚洲成人影音 | 顶级嫩模啪啪呻吟不断好爽 | 欧美精品成人一区二区在线观看 | 情涩快播 | 老牛影视一区二区三区 | 拔插拔插华人 | 欧美打屁股 | 阿v视频在线免费观看 | 日韩一级一区 | 日韩精品一区二区电影 | 欧美日韩在线成人 | jizz亚洲女人高潮大叫 | 性欧美videossex精品 | 国产97在线 | 亚洲 | 成人a级网站 | 日韩av免费 | 99国产精品| 欧美激情18 | www国产com| 黄色片在线免费观看视频 | 中文字幕乱视频 | 特黄特色大片免费 | 日韩一级黄色录像 | 欧美午夜精品久久久久久浪潮 | 91干视频 | 亚洲日本欧美精品 | 日韩成人区 | 伊人视频 | 欧美日韩a√ | 婷婷色在线播放 | 一区二区三区有限公司 | 日韩久久视频 | 性欧美8khd高清极品 | www.成人.com| www夜片内射视频日韩精品成人 | 日本精品一区二区三区视频 | 一区二区三区视频观看 | 中文在线а√天堂官网 | 亚洲精品小视频在线观看 | 精品人妻伦一二三区久久 | 情不自禁电影 | 欧美日韩一 | 国产精品人妻一区二区三区 | 国产乱码精品一区二区三区不卡 | 日本成人在线免费观看 | 夜夜夜网 | 国产精品美女www爽爽爽视频 | 免费在线看视频 | 天天曰夜夜操 | 一级欧美黄色片 | 久久久国产精品x99av | 91精品国自产在线偷拍蜜桃 | 91精品福利在线 | 欧美日韩中文在线视频 | www.在线视频| 男生插女生的网站 | 国产午夜在线视频 |