我创建了自定义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来调整垂直对齐
答案 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。使用我的波纹管自定义方法设置UILable
,UITextField
以及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);
我希望这对你有帮助:))