簡體   English   中英

如何創建具有透明漸變背景的UIView子類?

[英]How do I create a UIView subclass with a transparent gradient background?

我想創建一個具有透明漸變背景的自定義UIView ,以使文本在此自定義視圖后面的視圖上更可見。

這是一個示例圖像:

在此處輸入圖片說明

圖片橙色框是我的透明漸變視圖下的UIView 然后,我將文本放在透明漸變視圖的頂部,並且由於其較暗,因此文本將更加可見,但是您仍然可以從其后面看到一些橙色框。

我在弄清楚如何使用UIView完成此操作時遇到了麻煩。

在我的自定義UIViewdrawRect我有:

- (void)drawRect:(CGRect)rect
{
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef context = UIGraphicsGetCurrentContext();

    NSArray *gradientColors = @[(id)[UIColor colorWithWhite:0.0 alpha:0.0].CGColor,
                                (id)[UIColor colorWithWhite:0.0 alpha:0.55].CGColor,
                                (id)[UIColor colorWithWhite:0.0 alpha:0.7]];

    CGFloat gradientLocations[] = {0, 0.77, 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);
}

但是它似乎不支持透明性,因為當我將UIView添加到self.view它是完全不透明的黑色。

這就是我在CSS中的做法:

background-image: linear-gradient(-180deg, rgba(0,0,0,0.00) 0%, rgba(0,0,0,0.55) 23%, rgba(0,0,0,0.70) 100%);

但是同樣,我不知道如何針對自定義UIView子類執行此操作。

我不會打擾CoreGraphics,所以我會使用CAGradientLayer

  1. 在子類中覆蓋+layerClass

     + (Class)layerClass { return [CAGradientLayer class]; } 
  2. 在接口中重新定義layer屬性以使用此類。

     @property(nonatomic, readonly, retain) CAGradientLayer *layer; 
  3. 設置顏色和其他屬性。

     self.layer.colors = gradientColors; self.layer.locations = gradientLocations; // But this time as `NSArray` self.layer.startPoint = startPoint; // From 0 to 1 self.layer.endPoint = endPoint; // From 0 to 1 

您可以像這樣在photoshop中創建半透明圖像 在此處輸入圖片說明 並將其放在您的OrangeView上。 由於此圖像太暗,您可以通過更改其Alpha值來控制其透明度。 這種安排將使您的textView和transImage都成為orangeView的子視圖。 文本視圖將放置在transImage的頂部。

無需編寫任何代碼。

讓我知道是否需要更多信息.. :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM