4

我创建了自定义UITextView类,其中 textView 会随着用户键入字符而动态增长,并且 textview 框架会动态调整大小。我想将文本垂直居中对齐在框架中,默认情况下它总是在底部。我添加UIEdgeInsets以使其看起来像它中心,但它给我带来了更多问题。如果我尝试设置内容偏移量,那么 textView 中心也会发生变化。内容偏移量和 textView 中心是否相互影响?垂直居中。最初我设置 UITextView 字体 23.0 带有一个矩形边框(textview 框架层边框)。当我开始在那个框中输入文本时,文本出现在边框的底部。然后我正在使用

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

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

4

1 回答 1

-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); 
于 2013-05-02T09:48:37.210 回答