每次点击UI按钮时,我都会尝试按句子的顺序将句子的单词初始化为UIlabels。
我还想识别不同标签中的句子何时接近屏幕的末尾,然后接下来的单词并将其放在句子单词下面的行中,如在Microsoft Word中按Enter键。
我已经尝试过这段代码但它会在同一个地方加载所有单词。
- (void)change:(id)sender
{
NSString *sentence = @"i am a boy with passion";
NSArray *array = [sentence componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@" "]];
CGFloat xVal = 11.0;
for (NSString *words in array) {
UILabel *labelText = [[UILabel alloc]initWithFrame:CGRectMake(xVal, 50, 300, 80)];
labelText.layer.borderColor = [UIColor blueColor].CGColor;
labelText.layer.borderWidth = 6.0;
labelText.backgroundColor = [UIColor clearColor];
labelText.textColor = [UIColor blackColor];
labelText.font = [UIFont boldSystemFontOfSize:20.0f];
labelText.text = words;
xVal=+200;
[self.view addSubview:labelText];
[labelText setUserInteractionEnabled:YES];
[labelText sizeToFit];
答案 0 :(得分:1)
xVal=+200;
表示xVal = 200。所以除了第一个标签以外所有其他人都有相同的来源。这就是为什么他们克服了。
用于查找标签是否移出界限
在for循环中初始化yVal
,
在循环内添加
CGFloat width = [words sizeWithFont:[UIFont systemFontOfSize:[UIFont systemFontSize]]].width; if (self.view.frame.size.width<xVal+width) { yVal+=50; xVal = 11; } UILabel *labelText = [[UILabel alloc]initWithFrame:CGRectMake(xVal, yVal, 300, 80)];
确保使用,a)在查找宽度时用于标签的字体,b)根据需要调整yVal
中的增量。
别忘了将xVal=+200;
更改为xVal+=200;
答案 1 :(得分:0)
你的问题就在这一行:
xVal=+200;
这与说xVal = 200
相同;加号表示正200而不是200。试试这个:
xVal += 200;