大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

优雅的实现CALayer的"AutoLayout"的两种方案

} - (void)layoutSubviews { [super layoutSubviews];CGColor, (id)[[UIColor alloc] initWithRed:33/255.0 green:94/255.0 blue:147/255.0 alpha:1]. method_exchangeImplementations(originalMethod, newMethod);self.layoutSubviewsCallback ? } - (void (^)(UIView *))layoutSubviewsCallback { return objc_getAssociatedObject(self, "layoutSubviewsCallback"); } @end 外部使用: CAGradientLayer *gradientLayer = [CAGradientLayer layer];

使用Quartz 2D实现径向渐变

the location 1 of `gradient' corresponds to a circle centered at `endCenter' with radius `endRadius'; } 见证奇迹的时候就要到了!哦,等等,我们还需要一个ShapeLayer。那我们就创建一个CAShapeLayer对象,将线条的path加到shapeLayer上。上完代码(其实就跟使用CAShapeLayer和CAGradientLayer创建轴向渐变一模一样,只是将gradientLayer设置颜色和位置放到了类里面),让我们重新来见证奇迹吧!

iOS tutorial 8:使用IBInspectable 和 IBDesignable定制UI

iOS tutorial 8:使用IBInspectable 和 IBDesignable定制UI 参考:appcode网站的书《Intermediate iOS Programming with Swift》 的Chapter 36 例子代码:https://github.com/andyRon/LearniOSByProject/tree/master/77 理解IBInspectable 和 IBDesignable 简单地说,IBInspectable 就是允许开发者在IB的属性检查器中添加额外的选项。IBDesignable 能够让* IBInspectable* 添加的额外选项产生的变化在IB中实时显示。以Button的圆角为例说明。 正

CALayer动画之二CAShapeLayer画一个带渐变色的圆弧

CALayer动画之二CAShapeLayer画一个带渐变色的圆弧 动效.cgColor ] let frame1 = CGRect(x: 0, y: 0, width: backCircle.width/2, height: backCircle.height) let gradientLayer1 = CAGradientLayer() gradientLayer1.startPoint = CGPoint(x: 0.5,y: 0) gradientLayer1.endPoint = CGPoint(x: 0.5,y: 1) gradientLayer1.frame = frame1 gradientLayer1.colors = colors1 //创建第二个gradientLayer let colors2 = [ UIColor.RGBA(red: 253, green: 237, blue: 74, alpha: 1.0).

iOS MKMapView 地图轨迹回放的动画实现

iOS MKMapView 地图轨迹回放的动画实现 这个动画是我们的app 1.6.0版本中的一个主要功能,先看效果: 运动轨迹. velocity = malloc(sizeof(float)*smoothTrackCount);i++){ @autoreleasepool { NSDictionary *dic = [smoothTrackArray objectAtIndex:i]; } #pragma mark - 构建path, 调用者负责释放内存! - (CGMutablePathRef)pathForPoints:(CGPoint *)points count:(NSUInteger)count{ if (points == NULL || count = 1){ return NULL; }else{ offset = xDiff/fabs(yDiff);

Core Animation 中的特有图层

view.layer.addSublayer(gradientLayer) let gradientAnimation = CABasicAnimation(keyPath: "locations") gradientAnimation.fromValue = [0.0, 0.0, 0.25] gradientAnimation.toValue = [0.75, 1.0, 1.0] gradientAnimation.duration = 3.0 gradientAnimation.repeatCount = 100 unlock = UILabel.init(frame: gradientLayer.bounds) unlock?

iOS百分比View

iOS百分比View PercentView 一个圆形百分比View现在很多的App都有这么一个小小的View。可以用在显示你剩余流量占总流量的百分比,也可以显示你当前进度占总进度的百分比。 参数,属性 //目标layer @property (nonatomic, strong) CAShapeLayer *progressLayer; 其中gradientLayer可以设置多个颜色,做成那种颜色渐变的效果 _gradientLayer.colors = @[(id)[UIColor redColor].CGColor, (id)[UIColor yellowColor].

IOS开发实用技巧(一)

IOS开发实用技巧(一) 1.调试技巧重写description方法打印类的成员属性 #import -(NSString *)description{ unsigned int count = 0; @end @implementation UIView (MethodSwizzling) + (void)zh_swizzleInstanceSelector:(SEL)origSelector swizzleSelector:(SEL)swizzleSelector { // 获取原有方法 Method origMethod = class_getInstanceMethod(self,origSelector); } id count1 = [dataArray valueForKeyPath:@"@count"]; // 1 NSLog(@"%@,%@,%@,%@,%@",count1,count2,count3,count4,count5);

Core Animation 第六章 专用图层(下)

cropping(to: titleRect) let imageRep = NSBitmapImageRep(cgImage: titleImage!write(to: fileURL) } catch _ {} } } 运行这个swift的脚本的时候记得在命令行追加自己的图片路径,或者在Xcode中追加scheme参数 修改Edit Scheme 接下来回到我们的CATiledLayer。CATiledLayer可以很好的ScrollView结合在一起。 class CATiledLayerViewController: UIViewController, CALayerDelegate { @IBOutlet weak var scrollView: UIScrollView!

CAGradient梯度图层

CAGradient梯度图层 说明:此文不断更改内容和形式,如有不足请指正. 两个动画效果来了解一下CALayer的两个重要的subClass:CAGradientLayer和CAReplicatorLayer。 CAGradientLayer是用来生成两种或更多颜色平滑渐变的。 基础渐变:CAGradientLayer有startPoint和endPoint属性,他们决定了渐变的方向。 1.先创建一个简单的gradientLayer: 代码1 效果1 2.如果改变绘制的起点startPoint 代码2 效果2 3.如果同时改变colo

iOS梯度动画

iOS梯度动画 效果图 PJAnimatedMaskLabel.gif 代码 设置梯度条 - (void)didMoveToWindow { [self.layer addSublayer:_gradientLayer]; CABasicAnimation *gradientAnimation = [CABasicAnimation animationWithKeyPath:@"locations"]; gradientAnimation.fromValue = @[@0.0, @0.0, @0.25]; gradientAnimation.toValue = @[@0.75, @1.0

简单实现带渐变色的折线图

var currentIndex: Int = 1 private lazy var dataArray:[CGPoint] = { var floatArray:[CGPoint] = [] for i in 1...20{ let x: CGFloat = CGFloat(i * 15) let y: CGFloat = CGFloat(arc4random() % 100) + 20 let point = CGPoint(x: x, y: y) floatArray.append(point) } return floatArray }() override func didMoveToSuperview() { super.didMoveToSuperview() granLayer.colors = [#colorLiteral(red: 1, green: 0.4664840698, blue: 0.2368942201, alpha: 1).cgColor,#colorLiteral(red: 1, green: 1, blue: 1, alpha: 1).

使用CALayer绘制类似于仪表盘效果

添加刻度线, 提取出方法,根据index绘制对应的刻度线: - (void)containerLayer:(CALayer *)containerLayer addDialWithIndex:(NSInteger)index { CAShapeLayer *dialItemLayer = [CAShapeLayer layer]; CGFloat outsideRadius = _radius - self.ringWidth / 2;// 渐变层的组合 // 生成左边渐变色 CAGradientLayer *leftLayer = [CAGradientLayer layer]; [UIView animateWithDuration:1 animations:^{ self.dashboardView.pointerView.transform = CGAffineTransformMakeRotation(angle);

仿写知乎日报 - 主页面补遗(Part 2)

_gradientLayer = [CAGradientLayer layer]; _gradientLayer.locations = @[ @0.0, @0.4, @0.7, @1.0 ];self.topView) { self.topView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 64)]; } topView 的高度要和 Section Header 的高度一样,不然替换的时候 Header 的高度会变一下,不完美!另外, 这段代码还修复 Part1 中提到的 topView 没有完全隐藏的 bug。最后的实现就是下面这样: 另外,代码请戳 github

文字与图片渐变效果(图层CALayer与属性蒙版mask )

// 疑问:渐变层能不能加在label上 // 不能,如果添加渐变层到label图层上,则会遮盖label的文字图层;如果作为label图层的mask,由于mask是完全不透明渐变层,所以是正常显示,这种情况如果消失了,说明mask的frame.origin没有设置正确。 // 添加渐变层到控制器的view图层上 [self.view.layer addSublayer:gradientLayer]; gradientLayer.mask = label.layer; imageView.image = [UIImage imageNamed:@"abc.png"]; imageView;

iOS渐变圆环旋转动画CAShapeLayer CAGradientLayer

iOS渐变圆环旋转动画CAShapeLayer CAGradientLayer shape.gif demo.png - (void)viewDidLoad { [super viewDidLoad]; [layer addSublayer:gradientLayer]; CABasicAnimation *rotationAnimation2 = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; // Dispose of any resources that can be recreated. } @end 关键的地方在于CABasicAnimation对象的初始化方式中keyPath的设定。在iOS中有以下几种不同的keyPath,代表着不同的效果: 270936547379029.png

CAGradientLayer的使用

png 画图还是那么差劲,能看懂就好 - -比如startPoint是(0,0) endPoint是(0,1)则颜色的绘制方向由左到右。其他的类推。CAGradientLayer的多种颜色的分割由0- 1的比例决定不由它的frame决定。 颜色分割点.png 代码部分 @property (nonatomic, strong) CAGradientLayer *gradientLayer; //laye的position和view的center一样 居中属性 self.gradientLayer.position = self.view.center;CGColor, (__bridge id)[UIColor blueColor].

iOS实用技巧集锦(持续更新)

iOS实用技巧集锦(持续更新) 索引 友情提示:点击下方超链接, 开启新页面后, 会自动定位到对应的位置.也可以直接复制想看的内容, 使用 Command + F 直接搜索. // Replace self.view self.view = containerView; 查看原文 UINavigationBar+StatusBarHidden.h @interface UINavigationBar (StatusBarHidden) @property (nonatomic) BOOL fixedNavigationBarHeight; 计算两点之间距离CLLocationDistance distance = MAMetersBetweenMapPoints(point1,point2);

Swift之CAGradientLayer 实现渐变色效果

gif 四、设置颜色的相对坐标 我们前面看到的效果,颜色的位置都是默认的均分,下面我们来自定义的实现: 这个可以通过 CAGradientLayer 的 locations 属性来设置。该属性需要传入一个 NSNumber 对象数组,每个数字确定了每个颜色的起始位置(starting location)。另外,这些数字是浮点数,取值范围在 0.0 到 1.0 之间。 gradientLayer.locations = [0.0, 0.35] 效果是这个样子哒: 点击渐变.