iOS圖文混排

如圖所示:這是一個字符串,在那些橫線的位置我需要添加文本框來供填寫。幾經周折冒签,我用了一個比較古老的方法把這個問題解決了控汉。

貼上代碼看看吧:

[objc]view plaincopy

//

//??Layout5Controller.m

//??happylearning

//

//??Created?by?WuShuliang?on?16/3/25.

//??Copyright???2016年?ajing.?All?rights?reserved.

//

#import?"Layout5Controller.h"

#import?"ContentController.h"

#import?

#define?LINE?@"____________"

@interfaceLayout5Controller?()

{

NSString*_questionString;//"\n"分割后數組中的元素

NSString*questionString;//LINE分割后數組中的元素

NSMutableArray*arrayQuestion;//根據LINE把字符串分割存儲在數組中

NSMutableArray*_arrayQuestionWidth;//"\n"分割后數組中的元素存進去

NSMutableArray*_arrayQuestionHeight;//"\n"分割后數組中的行數存進去

}

@end

@implementationLayout5Controller

-?(void)viewDidLoad?{

[superviewDidLoad];

_txtAnswer.delegate=self;

_questionString=[[NSStringalloc]init];

questionString=[[NSStringalloc]init];

arrayQuestion=[[NSMutableArrayalloc]initWithCapacity:0];

_arrayQuestionWidth=[[NSMutableArrayalloc]initWithCapacity:0];

_arrayQuestionHeight=[[NSMutableArrayalloc]initWithCapacity:0];

}

-?(void)viewDidAppear:(BOOL)animated

{

//????_lblAnswer1.lineBreakMode?=?UILineBreakModeWordWrap;//換行模式笔诵。

[selfforCreateText];

}

//創(chuàng)建文本框

-?(void)forCreateText

{

//1.根據“\n”把整個字符串分割存放在數組中

NSArray*arrayNo1=[_strQuestioncomponentsSeparatedByString:@"\n"];//?這里的_strQuestion就是一個字符串

NSMutableArray*arrayQuestionNo1=[NSMutableArrayarrayWithArray:arrayNo1];

//創(chuàng)建變量,計算整個句子的高度

CGSize?detailSize?=?[@"the"sizeWithFont:[UIFontsystemFontOfSize:19]constrainedToSize:CGSizeMake(MAXFLOAT,?MAXFLOAT)lineBreakMode:UILineBreakModeWordWrap];

//創(chuàng)建變量姑子,計算“_________”的高寬度

CGSize?lineSize?=?[LINEsizeWithFont:[UIFontsystemFontOfSize:19]constrainedToSize:CGSizeMake(MAXFLOAT,?MAXFLOAT)lineBreakMode:UILineBreakModeWordWrap];

//循環(huán)取出根據“\n”分割成的數組中的數據

for(inti=0;?i

_questionString=[arrayQuestionNo1objectAtIndex:i];

//判斷是否含有“__________”

if([_questionStringrangeOfString:@"____________"].location!=NSNotFound)?{

//2.根據“__________”把字符串分割存儲在數組中

NSArray*array=[_questionStringcomponentsSeparatedByString:@"____________"];

arrayQuestion=[NSMutableArrayarrayWithArray:array];

//????????NSLog(@"題目分割為:%@",arrayQuestion);

//3.判斷元素個數乎婿,然后在相應位置后面追加上“__________”(便于計算創(chuàng)建文本框的位置)

if(arrayQuestion.count>2)?{//有兩個以上元素

//????????????NSLog(@"多根“__________”");

for(intj=0;?j

if(j==0)?{

//1.被“__________”分割的組成的數組的第1個元素

questionString=arrayQuestion[0];

//2.在第1個元素后邊加上“__________”

arrayQuestion[0]=[NSStringstringWithFormat:@"%@%@",questionString,LINE];

//3.把元素添加到數組中,用來計算放置文本框的位置

[_arrayQuestionWidthaddObject:questionString];

[_arrayQuestionHeightaddObject:[NSStringstringWithFormat:@"%i",i]];

}

if(j==1)?{

//1.被“__________”分割的組成的數組的第2個元素

questionString=[NSStringstringWithFormat:@"%@%@",arrayQuestion[0],arrayQuestion[1]];

//2.第2個元素變?yōu)榍?個元素加上原本的第2個元素后邊加上“__________”

arrayQuestion[1]=[NSStringstringWithFormat:@"%@%@",questionString,LINE];

//3.把元素添加到數組中街佑,用來計算放置文本框的位置

[_arrayQuestionWidthaddObject:questionString];//

[_arrayQuestionHeightaddObject:[NSStringstringWithFormat:@"%i",i]];

}

if(j==2)?{

//1.被“__________”分割的組成的數組的第3個元素

questionString=[NSStringstringWithFormat:@"%@%@",arrayQuestion[1],arrayQuestion[2]];

//2.第3個元素變?yōu)榍?個元素加上原本的第3個元素后邊加上“__________”

arrayQuestion[2]=[NSStringstringWithFormat:@"%@%@",questionString,LINE];

//3.把元素添加到數組中谢翎,用來計算放置文本框的位置

[_arrayQuestionWidthaddObject:questionString];

[_arrayQuestionHeightaddObject:[NSStringstringWithFormat:@"%i",i]];

}

if(j==3)?{

//1.被“__________”分割的組成的數組的第4個元素

questionString=[NSStringstringWithFormat:@"%@%@",arrayQuestion[2],arrayQuestion[3]];

//2.第4個元素變?yōu)榍?個元素加上原本的第4個元素后邊加上“__________”

arrayQuestion[3]=[NSStringstringWithFormat:@"%@%@",questionString,LINE];

//3.把元素添加到數組中捍靠,用來計算放置文本框的位置

[_arrayQuestionWidthaddObject:questionString];

[_arrayQuestionHeightaddObject:[NSStringstringWithFormat:@"%i",i]];

}

if(j==4)?{

//1.被“__________”分割的組成的數組的第5個元素

questionString=[NSStringstringWithFormat:@"%@%@",arrayQuestion[3],arrayQuestion[4]];

//2.第5個元素變?yōu)榍?個元素加上原本的第5個元素后邊加上“__________”

arrayQuestion[4]=[NSStringstringWithFormat:@"%@%@",questionString,LINE];

//3.把元素添加到數組中,用來計算放置文本框的位置

[_arrayQuestionWidthaddObject:questionString];

[_arrayQuestionHeightaddObject:[NSStringstringWithFormat:@"%i",i]];

}

if(j==5)?{

//1.被“__________”分割的組成的數組的第6個元素

questionString=[NSStringstringWithFormat:@"%@%@",arrayQuestion[4],arrayQuestion[5]];

//2.第6個元素變?yōu)榍?個元素加上原本的第6個元素后邊加上“__________”

arrayQuestion[5]=[NSStringstringWithFormat:@"%@%@",questionString,LINE];

//3.把元素添加到數組中森逮,用來計算放置文本框的位置

[_arrayQuestionWidthaddObject:questionString];

[_arrayQuestionHeightaddObject:[NSStringstringWithFormat:@"%i",i]];

}

}

}

//數組的第一個元素后邊加上1根橫線

else//兩個和兩個以下元素

{

//1.被“__________”分割的組成的數組的第一個元素

questionString=arrayQuestion[0];

//2.在第1個元素后邊加上“__________”

arrayQuestion[0]=[NSStringstringWithFormat:@"%@%@",questionString,LINE];

//3.把元素添加到數組中榨婆,用來計算放置文本框的位置

[_arrayQuestionWidthaddObject:questionString];

[_arrayQuestionHeightaddObject:[NSStringstringWithFormat:@"%i",i]];

}

}

//????????NSLog(@"array:%@\n%@",_arrayQuestionWidth,_arrayQuestionHeight);

}

//4.創(chuàng)建文本框

for(inti=0;?i<_arrayQuestionWidth.count;?i++)?{

//計算文本框之前的長度(x坐標)

CGSize?headLength=[[_arrayQuestionWidthobjectAtIndex:i]sizeWithFont:[UIFontsystemFontOfSize:19]constrainedToSize:CGSizeMake(MAXFLOAT,?MAXFLOAT)lineBreakMode:UILineBreakModeWordWrap];

//第幾行

NSString*strLine=[_arrayQuestionHeightobjectAtIndex:i];

intintLine=[strLineintValue];//類型轉換

//在這里創(chuàng)建文本框

_txtAnswer=[[UITextFieldalloc]initWithFrame:CGRectMake(headLength.width,?detailSize.height*intLine,lineSize.width,?detailSize.height)];

_txtAnswer.font=?[UIFontfontWithName:@"Arial"size:19.0f];

//?????????_txtAnswer.backgroundColor=[UIColor?redColor];

_txtAnswer.textColor=?[UIColorblackColor];

_txtAnswer.textAlignment=?UITextAlignmentCenter;

//設置為YES時文本會自動縮小以適應文本窗口大小.默認是保持原來大小,而讓長文本滾動

_txtAnswer.adjustsFontSizeToFitWidth=YES;

//設置自動縮小顯示的最小字體大小

_txtAnswer.minimumFontSize=19;

//限制文本框輸入長度(如果需要的話,就把一下方法加上)

//?????????[self.txtAnswer?addTarget:self?action:@selector(LimitTextFieldLength:)?forControlEvents:UIControlEventEditingChanged];

//設置鍵盤的樣式

_txtAnswer.keyboardType=?UIKeyboardTypeDefault;

_txtAnswer.borderStyle=UITextBorderStyleNone;

//允許用戶交互

self.lblAnswer1.userInteractionEnabled=true;

self.txtAnswer.userInteractionEnabled=true;

[self.lblAnswer1addSubview:_txtAnswer];

}

}

#pragma?mark?-?限制文字長度

-(void)LimitTextFieldLength:(id)sender{

if(_txtAnswer.text.length>25)?{

_txtAnswer.text=?[_txtAnswer.textsubstringToIndex:25];

}

}

//?鍵盤失去第一響應者

-(void)touchesBegan:(NSSet?*)toucheswithEvent:(UIEvent*)event{

[self.viewendEditing:NO];

}

-?(void)didReceiveMemoryWarning?{

[superdidReceiveMemoryWarning];

//?Dispose?of?any?resources?that?can?be?recreated.

}

@end

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末褒侧,一起剝皮案震驚了整個濱河市良风,隨后出現的幾起案子,更是在濱河造成了極大的恐慌闷供,老刑警劉巖烟央,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異歪脏,居然都是意外死亡吊档,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門唾糯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怠硼,“玉大人,你說我怎么就攤上這事移怯∠懔В” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵舟误,是天一觀的道長葡秒。 經常有香客問我,道長嵌溢,這世上最難降的妖魔是什么眯牧? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮赖草,結果婚禮上学少,老公的妹妹穿的比我還像新娘。我一直安慰自己秧骑,他們只是感情好版确,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乎折,像睡著了一般绒疗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上骂澄,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天吓蘑,我揣著相機與錄音,去河邊找鬼坟冲。 笑死磨镶,一個胖子當著我的面吹牛溃蔫,可吹牛的內容都是我干的。 我是一名探鬼主播棋嘲,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼矩桂!你這毒婦竟也來了沸移?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤侄榴,失蹤者是張志新(化名)和其女友劉穎雹锣,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體癞蚕,經...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡蕊爵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了桦山。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攒射。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖恒水,靈堂內的尸體忽然破棺而出会放,到底是詐尸還是另有隱情,我是刑警寧澤钉凌,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布咧最,位于F島的核電站,受9級特大地震影響御雕,放射性物質發(fā)生泄漏矢沿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一酸纲、第九天 我趴在偏房一處隱蔽的房頂上張望捣鲸。 院中可真熱鬧,春花似錦闽坡、人聲如沸摄狱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽媒役。三九已至,卻和暖如春宪迟,著一層夾襖步出監(jiān)牢的瞬間酣衷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工次泽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留穿仪,地道東北人席爽。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像啊片,于是被迫代替她去往敵國和親只锻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容