我在这里寻求帮助,但我还没有让任何解决方案正常工作。 Here就是一个例子,但对我来说还没有用。
这是我正在使用的xib。有一个outterView和略微偏移的innerView(为了得到左边的粗蓝线。里面有一个UILabel,UITextView,UILabel和UITextView。再加上两个UIButton,我可以把它抱在视图的底部。< / p>
XIB图片:xib
挑战在于两个UITextView包含动态长度内容。它们可以成长,然后内部/外部视图也必须增长。以下是我尝试这样做的方式,但有一些变化,但没有可靠的成功。文本顶部有重叠的文本,重叠的文本,按钮等等。
// viewDidLoad (or in loadView)
-(void)viewDidLoad {
[super viewDidLoad];
// set UITextView text
[warmupDesc setText:[workout objectForKey:@"warmup_description"]];
[workoutDesc setText:[workout objectForKey:@"workout_description"]];
// warmup sizeToFit
[self.warmupDesc sizeToFit];
CGSize txtSize = self.warmupDesc.contentSize;
txtSize.height = self.warmupDesc.frame.size.height;
self.warmupDesc.contentSize = txtSize;
// workout sizeToFit
[self.workoutDesc sizeToFit];
CGSize txtSize2 = self.workoutDesc.contentSize;
txtSize2.height = self.workoutDesc.frame.size.height;
self.workoutDesc.contentSize = txtSize2;
// set outview height to be sum of heights of all internal items, plus padding
outterView.frame = CGRectMake(outterView.frame.origin.x, outterView.frame.origin.y, outterView.frame.size.width, warmupDesc.frame.size.height + workoutDesc.frame.size.height + recordBtn.frame.size.height + 60);
// update innerView height to match
innerView.frame = CGRectMake(innerView.frame.origin.x, innerView.frame.origin.y, innerView.frame.size.width, outterView.frame.size.height);
}
结果大多是这样的。我不确定UITextView的调整大小(默认为85px)。底部应该至少是它的两倍。按钮重叠,显示outterView的附加逻辑不能正常工作。
有关正确铺设这个或更好的自动调整大小方法的提示吗?到目前为止,我已经避免使用UITextviews这个原因,是否有更好的元素?
结果图片:simulator
答案 0 :(得分:0)
试试这个:
-(void)viewDidLoad
{
//...
//warmup sizeToFit
[self.warmupDesc sizeToFit];
CGRect warmUpFrame = self.warmupDesc.frame;
warmUpFrame.size.height = self.warmupDesc.contentSize.height;
self.warmupDesc.frame = warmUpFrame;
//workout sizeToFit
[self.workoutDesc sizeToFit];
CGRect workoutDescFrame = self.workoutDesc.frame;
workoutDescFrame.height = self.workoutDesc.contentSize.height;
self.workoutDesc.frame = workoutDescFrame;
//...
}
但是现在它会一路走下去
当按钮离开可见视图时,您是否处理过场景?
就像使用UIScrollView
?
答案 1 :(得分:0)
跟进。我发现下面的getContentSize函数的方法是让UITextView的高度相当有效。虽然对于小文本来说它似乎略微缩短,而对于较大的文本来说似乎过于大,所以我做了一些似乎有帮助的调整(+ 10,*。80)。但是,这种方法效果很好。
{
self.warmupDesc.frame = CGRectMake(self.warmupDesc.frame.origin.x, self.warmupName.frame.origin.y + self.warmupName.frame.size.height - 7, self.warmupDesc.frame.size.width, ([self getContentSize: warmupDesc].height + 10) * .80);
}
-(CGSize) getContentSize:(UITextView*) myTextView{
CGRect frame = [myTextView.text boundingRectWithSize:CGSizeMake(myTextView.frame.size.width, FLT_MAX)
options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15]}
context:nil];
return frame.size;
}