iOS-画形状的view
来源:互联网 发布:网络现金赌博备用网址 编辑:程序博客网 时间:2024/05/22 00:14
#import <UIKit/UIKit.h>#import <QuartzCore/QuartzCore.h>@interface UIView (Shape)- (void)setShape:(CGPathRef)shape;@end
#import "UIView+Shape.h"@implementation UIView (Shape)- (void)setShape:(CGPathRef)shape{ if (shape == nil) { self.layer.mask = nil; } CAShapeLayer* maskLayer = [CAShapeLayer layer]; maskLayer.path = shape; self.layer.mask = maskLayer;}@end@interface UIBezierPath (BasicShape)
+ (UIBezierPath *)cutCorner:(CGRect)originalFrame length:(CGFloat)length;@end
#import "UIBezierPath+BasicShape.h"@implementation UIBezierPath (BasicShape)+ (UIBezierPath *)cutCorner:(CGRect)originalFrame length:(CGFloat)length{ CGRect rect = originalFrame; UIBezierPath *bezierPath = [UIBezierPath bezierPath]; [bezierPath moveToPoint:CGPointMake(0, length)]; [bezierPath addLineToPoint:CGPointMake(length, 0)]; [bezierPath addLineToPoint:CGPointMake(rect.size.width - length, 0)]; [bezierPath addLineToPoint:CGPointMake(rect.size.width, length)]; [bezierPath addLineToPoint:CGPointMake(rect.size.width, rect.size.height - length)]; [bezierPath addLineToPoint:CGPointMake(rect.size.width - length, rect.size.height)]; [bezierPath addLineToPoint:CGPointMake(length, rect.size.height)]; [bezierPath addLineToPoint:CGPointMake(0, rect.size.height - length)]; [bezierPath closePath]; return bezierPath;}@end使用方法:在[UIView viewWillAppear:]方法中加入下面代码[self.view setShape:[UIBezierPath cutCorner:self.view.bounds length:40].CGPath];
效果:让自定义 Button 响应自定义 Shape 内的点击事件
#import <UIKit/UIKit.h>#import "UIView+Shape.h"#import "UIBezierPath+BasicShape.h"@interface RFButton : UIButton{ CGPathRef path;}@end/// RFButton.m// ChristApp//// Created by Haozhen Li on 13-12-6.////#import "RFButton.h"@implementation RFButton- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { // Initialization code } return self;}- (void)setShape:(CGPathRef)shape{ [super setShape:shape]; path = shape;}- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{ if (CGPathIsEmpty(path)) { return YES; } //判断触发点是否在规定的 Shape 内 if (CGPathContainsPoint(path, nil, point, nil)) { return YES; } return NO;}@end
阅读全文
0 0
- iOS-画形状的view
- iOS使用CG绘制相应形状的view
- 自定义仪表盘形状的View
- iOS自定义形状的Button
- andriod 继承view定义自己的形状
- iOS生成特定形状、彩色的二维码
- 自定义View 特殊形状控件
- 自定义View各种形状画法
- iOS----view的自适应
- ios view的属性
- iOS View的旋转
- iOS view 的生命周期
- ios view的形变
- 在ios中特定形状剪裁图片的实现
- IOS 小例子,输出一个图形的坐标,颜色,形状。
- 用css画的各种形状
- 解决如何在view上掏出一个空心的各种形状
- Android进阶——自定义View之组合系统控件实现水珠形状的ItemView
- 第十二周项目二
- Jackson Unrecognized field
- Android Framework------之Input子系统
- 第十二周 【项目1
- angularjs 判断字符串是否是数字格式
- iOS-画形状的view
- Tomcat在Linux上的安装与配置
- Java对象结构及大小计算
- HaspMap解决hash冲突
- node.js基本模块学习(二) stream
- MySQL从头至尾汇总(4.1 子句篇)
- ijkplayer简单实现
- GET,POST,PUT,DELETE的区别
- 源码分析之应用加载过程解析AndroidManifest