IOS父子帧更改问题
我正在尝试调整IOS父子帧更改问题,ios,uitextview,frame,Ios,Uitextview,Frame,我正在尝试调整UITextView底部对齐的父视图的大小,下面是我的代码: -(void)textViewDidChange:(UITextView *)textView { CGSize newTextViewSize = [textView sizeThatFits:CGSizeMake(kTextViewFixedWidth, kTextViewMaxHeight)]; if( newTextViewSize.height != self.textViewOldHeight ) {
UITextView
底部对齐的父视图的大小,下面是我的代码:
-(void)textViewDidChange:(UITextView *)textView
{
CGSize newTextViewSize = [textView sizeThatFits:CGSizeMake(kTextViewFixedWidth, kTextViewMaxHeight)];
if( newTextViewSize.height != self.textViewOldHeight )
{
CGRect newTextViewFrame = textView.frame;
newTextViewFrame.size = CGSizeMake(fmaxf(newTextViewSize.width, kTextViewFixedWidth), newTextViewSize.height);
CGPoint sizeDiff = CGPointMake(newTextViewFrame.size.width-textView.frame.size.width, newTextViewFrame.size.height-textView.frame.size.height);
newTextViewFrame.origin = CGPointMake(textView.frame.origin.x, textView.frame.origin.y-sizeDiff.y);
self.textViewOldHeight = newTextViewFrame.size.height;
CGRect newViewFrame = self.frame;
newViewFrame.origin = CGPointMake(self.frame.origin.x, self.frame.origin.y-sizeDiff.y);
newViewFrame.size = CGSizeMake( self.frame.size.width, self.frame.size.height+sizeDiff.y);
self.frame = newViewFrame;
textView.frame = newTextViewFrame;
}
这里我试图做的是计算textView的大小更改,然后将该更改应用于其父视图,即self-。发生的情况是自动调整大小,但textView会重置。然而,当我推荐了发生自我调整大小的部分时,child textview按预期工作。有人能告诉我正确的方向来找出这里的问题吗
谢谢,玩得开心
在调查该案例时,我编写了以下代码:
-(void)resize
{
self.subView = ((UIView*)[self.subviews objectAtIndex:0]);
[UIView animateWithDuration:2.0
delay:0.0 options:UIViewAnimationOptionCurveEaseOut
animations:^{
CGRect newSubViewFrame = self.subView.frame;
newSubViewFrame.size.height += 100;
self.subView.frame = newSubViewFrame;
NSLog(@"%f", self.subView.frame.size.height);
} completion:^(BOOL finished) {
[UIView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
NSLog(@"%f", self.subView.frame.size.height);
CGRect newSuperViewFrame = self.frame;
newSuperViewFrame.origin.y -= 50;
newSuperViewFrame.size.height += 100;
self.frame = newSuperViewFrame;
NSLog(@"%f", self.subView.frame.size.height);
} completion:^(BOOL finished) {
}];
}];
NSLog(@"%f", self.subView.frame.size.height);
}
故事是我有一个超级(红色)和子视图(黑色),当代码运行时,子视图第一次按我的预期增长。但是,当超级视图开始调整大小时,子视图将重置其大小并记录所有返回的值。你知道怎么解决吗
如果
self
是textView
的父对象,则textView
的坐标相对于self
的坐标。这意味着,如果您更改self
和textView
两个帧的Y坐标,您可能会将textView
移动两倍于您所需的距离。。。请尝试仅删除您设置的newTextViewFrame.origin
@Guillaume的行。谢谢您的提醒,但调整大小的问题仍然存在。在条件检查后,您可以尝试[textview setneeddisplay]吗。@imalvare我做了,但没有工作。这是一个自动布局问题。通过禁用自动布局解决。如果有人碰巧知道任何解决方案,请发一个帖子。