ビューをviewControllerに配置しました。このビューに長方形を描画したいのですが、カスタムの高さがあります。viewController のパラメーターに基づいて高さを決定します。たとえば。パラメータが 50 の場合、長方形の高さが UIView の 50% になるようにします。
2 つの質問:
高さをカスタム drawRect に渡すにはどうすればよいですか?
四角形を UIView の下部に配置するにはどうすればよいですか?
Interface Builder を使用してビューを配置し、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 によるものです。
カスタム クラスにプロパティ *height を追加しましたが、viewController からこれを埋める方法がわかりません。そのため、UIView の一番下から開始し、決定した高さ (実際の高さの %) にしたいと考えています。
どうすればこれを達成できるか知っている人はいますか?