问题:
UITextView子类,并添加了一个子视图v1。错误:
它引发以下错误:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews.
尝试:
layoutSubviews中创建约束,但是我得到了相同的错误目标
问题:
发布于 2014-03-26 00:13:28
感谢@mackworth给出的解决方案的建议
为了完整起见,我正在回答它。
概述:
在UITextView上添加子视图,然后使用Autolayout似乎有一些问题。
解决方案:
因此,解决方案是将HazeView创建为UITextView父视图的子视图。
步骤:
UITextViewUITextView和HazeView作为子视图添加到同一个父视图中HazeView定位在UITextView底部[UIColor clearColor]HazeView上的用户交互UIView的子类,并将UITextView和HazeView放入其中,以便它可以重用。创建HazeView:
self.hazeView.backgroundColor = [UIColor clearColor];HazeView是UIView的子类
- (void)drawRect:(CGRect)rect
{
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = UIGraphicsGetCurrentContext();
UIColor *color1 = [UIColor colorWithRed:1.0 green:1.0
blue:1.0 alpha:0.25];
UIColor *color2 = [UIColor colorWithRed:1.0 green:1.0
blue:1.0 alpha:0.5];
UIColor *color3 = [UIColor colorWithRed:1.0 green:1.0
blue:1.0 alpha:0.75];
NSArray *gradientColors = @[(id) color1.CGColor,
(id) color2.CGColor,
(id) color3.CGColor];
CGFloat gradientLocations[] = {0, 0.50, 1};
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef) gradientColors, gradientLocations);
CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
CGGradientRelease(gradient);
}发布于 2014-03-25 13:50:55
我建议您使用以下库进行Autolayout:
https://github.com/jrturton/UIView-Autolayout
使用此方法添加约束非常容易。
创建UITextView的子类并将-(void)didMoveToSuperview中的约束添加为:
-(void)didMoveToSuperview
{
[self.subview pinToSuperviewEdges:JRTViewPinBottomEdge | JRTViewPinLeftEdge | JRTViewPinRightEdge inset:0];
[self.subview constrainToHeight:10];
}https://stackoverflow.com/questions/22635571
复制相似问题