Это может быть близко к тому, что вы хотите. Это пользовательский IB_DESIGNABLE
вид, поэтому вы можете увидеть его в IB / Раскадровке.
SanjayView.h
//
// SanjayView.h
//
// Created by Don Mag on 1/21/20.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
IB_DESIGNABLE
@interface SanjayView : UIView
@end
NS_ASSUME_NONNULL_END
SanjayView.m
//
// SanjayView.m
//
// Created by Don Mag on 1/21/20.
//
#import "SanjayView.h"
@interface SanjayView ()
@property (strong, nonatomic) CAGradientLayer *gLayer;
@end
@implementation SanjayView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self commonInit];
}
return self;
}
- (instancetype)initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
if (self) {
[self commonInit];
}
return self;
}
- (void)prepareForInterfaceBuilder
{
[super prepareForInterfaceBuilder];
[self commonInit];
}
- (void)commonInit {
self.backgroundColor = [UIColor clearColor];
if (!_gLayer) {
_gLayer = [CAGradientLayer new];
[self.layer addSublayer:_gLayer];
}
_gLayer.type = kCAGradientLayerRadial;
_gLayer.startPoint = CGPointMake(0.5, 0.5);
_gLayer.endPoint = CGPointMake(1.0, 1.0);
_gLayer.colors = @[
(id)[UIColor whiteColor].CGColor,
(id)[UIColor blueColor].CGColor,
(id)[UIColor colorWithRed:0.0 green:0.5 blue:0.0 alpha:1.0].CGColor,
(id)[UIColor greenColor].CGColor,
(id)[UIColor clearColor].CGColor,
];
_gLayer.locations = @[
[NSNumber numberWithFloat:0.7],
[NSNumber numberWithFloat:0.72],
[NSNumber numberWithFloat:0.75],
[NSNumber numberWithFloat:0.9],
[NSNumber numberWithFloat:0.95],
];
}
- (void)layoutSubviews {
[super layoutSubviews];
_gLayer.frame = self.bounds;
}
@end
Результат в IB:
Примечание: синий цвет, который вы видите является фоном представления viewController. Фактический SanjayView
имеет четкий фон.
Поиграйте с цветами и местами, пока не получите желаемый результат.