无法以编程方式更改UITextView框架大小
我在一个带有Interface构建器的视图中插入了一个UITextView,现在我想改变它的帧大小,使它适合程序化的内容。 问题是由于约束,大小似乎被锁定并且不能从代码中取消。 如果我在文件检查器中禁用使用自动布局,则每个对象都会删除约束,但我只想更改UITextView而不是其他对象。
[textview setFrame:CGRectMake(x,y,w,h)]; // This doesn't do anything to the uitextview
如果您正在使用约束,则必须使用约束来更改UITextView的大小。 在笔尖中设置出口,以便从代码访问您需要更改的约束。 您可以实时设置约束的constant
,这通常就足够了。
只是为了澄清其原因:如果视图的框架是由约束定位的,则无法更改视图的框架。 好吧,你可以,但它没有结果,这是不好的做法。 这是因为布局系统将使用约束本身来为您更改视图的框架! 因此,您可以更改框架,但布局系统将读取并解决约束并再次更改框架。
将约束视为布局系统的“待办事项列表”。 制约因素本身并无任何作用; 它们只是一个规则列表。 正是布局系统完成了工作(调用layoutSubviews
时)。 每次需要布局时,布局系统都会出现,读取约束,找出如何遵守约束,并通过设置视图的框架来实现。 您需要使用该系统,而不是反对它。
所有的UIViews和类都是从UIViewinheritance而来的,具有相同的属性:XIB文件中的“Lock”。 如果要更改这些视图的框架 。 你必须设置Lock is “Nothing”
如果您不想成为约束专家,请执行此操作(在视图控制器中)。
@property UITextView * textView;
//在viewWillAppear中动态创建UITextView
rect = CGRectMake(194., 180., 464., 524.); _textView = [[UITextView alloc] initWithFrame:rect]; [self.view addSubview:_textView];
//现在你可以随意resize
CGRect oldFrame = _textView.frame; CGRect newFrame = oldFrame; newFrame.size.height += 300; [_textView setFrame:newFrame];
- 在Lion / Xcode 4.3.1中debugging的ShareKit方法?
- 如何使用“getHue:saturation:brightness:alpha:”?
- 在XCode上使用定制的OpenCV for iOS会生成___sincos_stret未定义的符号
- 如何使关联对象的NSDate工作?
- 如何按位置sorting矩形数组?
- 带分页的UIScrollView +显示前一页/后一页的部分内容
- UICollectionView与重叠单元格和自定义插入和删除animation
- 在状态栏下没有导航栏的情况下,扩展UIViewController的视图
- BAD_ACCESS(code = EXC_I386_GPFLT)用ECDSA签名时