我已經在viewController上放置了一個視圖,我想在該視圖中繪製一個矩形,但是具有自定義高度。我根據我的viewController中的參數確定高度。例如, 。如果我的參數是50,我想矩形具有50%的UIView的高度。iOS drawRect自定義高度
2個問題:
我怎麼能傳遞高度自定義的drawRect?
如何讓矩形放置在UIView的底部?
我已經把使用界面生成器的視圖,我已經在的UIView的一個子類實施的drawRect和以此爲自定義類爲我UIView。
所以在自定義類,我有:
- (void)drawRect:(CGRect)rect
{
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
UIColor * lightGrayColor = [UIColor colorWithRed:230.0/255.0 green:230.0/255.0 blue:230.0/255.0 alpha:1.0];
CGRect paperRect = self.bounds;
drawLinearGradient(context, paperRect, lightGrayColor.CGColor, [UIColor clearColor].CGColor);
}
void drawLinearGradient(CGContextRef context, CGRect rect, CGColorRef startColor, CGColorRef endColor)
{
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGFloat locations[] = { 0.0, 1.0 };
NSArray *colors = @[(__bridge id) startColor, (__bridge id) endColor];
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef) colors, locations);
CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));
CGContextSaveGState(context);
CGContextAddRect(context, rect);
CGContextClip(context);
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
CGContextRestoreGState(context);
CGGradientRelease(gradient);
CGColorSpaceRelease(colorSpace);
}
這繪製一個漂亮的漸變矩形在我看來,但它填補了完整的UIView。 這是因爲self.bounds。
我已經添加了一個屬性*高度到我的自定義類,但我不知道如何填寫從我的viewController。所以我希望它從UIView的底部開始,並使其達到我已經確定的高度(真實高度的百分之一)。
任何人都知道我可以做到這一點?
爲什麼不添加子視圖(當前視圖的50%),然後填寫? –