如何在Objective c中制作多行曲线文本

时间:2017-03-23 11:26:42

标签: objective-c xcode core-text

我想用多行制作弯曲文字。

我使用了#34; CoreTextArcView.h" &安培; " CoreTextArcView.m"文件,我发现哪一个做弯曲文本,但当我尝试如下键入类似字符串" Hello \ nWolrd"对于多线曲线文本

CGRect rect1 = CGRectMake(0, 120, 320, 120);
UIFont * font1 = [UIFont fontWithName:@"Helvetica" size:26.0f]; 
UIColor * color1 = [UIColor whiteColor];
CoreTextArcView * cityLabel = [[[CoreTextArcView alloc] initWithFrame:rect1
                                                            font:font1
                                                            text:@"Hello\nWorld"
                                                          radius:85
                                                         arcSize:110
                                                           color:color1] autorelease];
cityLabel.backgroundColor = [UIColor clearColor];

[self.view addSubview:cityLabel];

但结果只显示一行弯曲文本,就像我输入的那样#34; Hello \ nWolrd"不受多线效应影响。

我想要这样:

enter image description here

1 个答案:

答案 0 :(得分:0)

直接使用新行文字在上面的自定义类中是不可能的,但是您应该放置一些逻辑并像下面一样处理它。

UIFont * font1 = [UIFont fontWithName:@"Helvetica" size:26.0f];
UIColor * color1 = [UIColor blackColor];

NSString *titleString = @"Hello\nWorld";
NSArray *strArray = [titleString componentsSeparatedByString:@"\n"];

int y = 120;
for (NSString *strCurveText in strArray) {
     CGRect rect1 = CGRectMake(0, y, 320, 70);
     CoreTextArcView * cityLabel = [[CoreTextArcView alloc] initWithFrame:rect1
                                                                        font:font1
                                                                        text:strCurveText
                                                                      radius:35
                                                                     arcSize:90
                                                                       color:color1];
      cityLabel.backgroundColor = [UIColor clearColor];

      [self.view addSubview:cityLabel];

      y = y + (rect1.size.height/2);
  }

根据文字大小设置 ArcSize 半径

希望这会对你有所帮助。