UITextView文本垂直对齐

时间:2013-05-02 09:44:04

标签: iphone ios objective-c ipad uitextview

我创建了自定义UITextView类,其中textView动态增长,因为用户类型字符和textview框架动态调整大小。我想在框架中垂直居中对齐文本,默认情况下它总是在底部。我添加了UIEdgeInsets制作或看起来像是在中心,但它为我创造了更多的问题。如果我尝试设置内容偏移,那么textView中心也会移动。内容偏移和textView中心相互影响吗?。我想要textview center尽管如此,但textView中的文本保持垂直居中。 最初我设置带有矩形边框的UITextView字体23.0(textview框架图层边框)。当我开始在该框中键入时,文本将出现在边框的底部。然后我正在使用

[textView setContentInset:UIEdgeInsetsMake(5,0,10,0)]; 

将文字放在中心位置。然后我必须发送这个文本进行打印放在UIImageView.Here我使用Paras提到的代码来匹配打印机dpi并调整它的大小。但是UIImageview上看起来的文本与打印的确切位置不匹配,因为我添加了UIEdgeInset来调整垂直对齐

3 个答案:

答案 0 :(得分:1)

将此类别用于UITextView类: https://gist.github.com/toms972/8330377

OR

按照以下链接中描述的步骤操作: http://imagineric.ericd.net/2011/03/10/ios-vertical-aligning-text-in-a-uitextview/

答案 1 :(得分:0)

您可以尝试此示例https://github.com/HansPinckaers/GrowingTextView

我希望这会对你有所帮助。

答案 2 :(得分:-1)

我有两种类型可以将动态高度设置为UITextView,看看两者都属于......

<强>更新

首先以编程方式创建UITextView,如下所示......

-(IBAction)btnAddTextView:(id)sender
{
    UIView *viewTxt = [[UIView alloc]initWithFrame:CGRectMake(imgBackBoard.center.x - 100,20, 220, 84)];
    [viewTxt setBackgroundColor:[UIColor clearColor]];
    viewTxt.userInteractionEnabled = YES;

    UITextView *txtAddNote=[[UITextView alloc]initWithFrame:CGRectMake(20,20, 180, 44)];
    [txtAddNote setBackgroundColor:[UIColor scrollViewTexturedBackgroundColor]];
    [txtAddNote setFont:[UIFont fontWithName:@"Helvetica-Bold" size:15]];
    txtAddNote.layer.borderWidth = 2.0;
    txtAddNote.layer.borderColor= [UIColor redColor].CGColor;
    viewTxt.tag = 111;
    txtAddNote.tag = 111;
    txtAddNote.userInteractionEnabled= YES;
    txtAddNote.delegate = self;
    txtAddNote.textColor = [UIColor whiteColor];
    [viewTxt addSubview:txtAddNote];
    [viewBoard addSubview:viewTxt];
    [txtAddNote release];

}

第一

1。此下面的方法是UITextViewDelegate的委托方法。

.h课程中

添加此UITextViewDelegate,然后将textView.delegate发送给self,如下所示..

yourTextView.delegate = self;

并使用粘贴此波纹管方法......

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    textView.frame = CGRectMake(textView.frame.origin.x, textView.frame.origin.y, textView.frame.size.width, textView.contentSize.height);
    return YES;
}

此处UITextView一次编辑文本时,textView的内容大小会发生变化。

2。使用我的波纹管自定义方法设置UILableUITextField以及UITextView

的动态高度
-(float) calculateHeightOfTextFromWidth:(NSString*) text: (UIFont*)withFont: (float)width :(UILineBreakMode)lineBreakMode
{
[text retain];
[withFont retain];
CGSize suggestedSize = [text sizeWithFont:withFont constrainedToSize:CGSizeMake(width, FLT_MAX) lineBreakMode:lineBreakMode];

[text release];
[withFont release];

return suggestedSize.height;
}

像下面这样使用这个方法......

CGSize sizeToMakeLabel = [yourTextView.text sizeWithFont:yourTextView.font]; 
yourTextView.frame = CGRectMake(yourTextView.frame.origin.x, yourTextView.frame.origin.y, 
sizeToMakeLabel.width, sizeToMakeLabel.height); 

我希望这对你有帮助:))