記iOS不規(guī)則圖形按鈕點擊事件--(類似圓餅其中一個)

1 新建一個繼承UIButton的類,

#import "specialShapeView.h"
@interface specialShapeView : UIButton

@property (strong ,nonatomic) NSMutableArray *pathPoints;//起點/終點集合

@property (strong ,nonatomic) UIBezierPath *tempPath;

在specialShapeView.m文件中

-(instancetype)initWithFrame:(CGRect)frame{

    self = [super initWithFrame:frame];
    
    if (self) {
        self.userInteractionEnabled = YES;
    }
    return self;
}
-(void)setMask{

    self.tempPath = [[UIBezierPath alloc] init];
    //這個代碼里我為了方便把坐標(biāo)都放在數(shù)組里了 就用比較笨的方法一點一點畫的 以后我再慢慢修改
    [self.tempPath moveToPoint:[self.pathPoints[0] CGPointValue]];
    [self.tempPath addQuadCurveToPoint:[self.pathPoints[2] CGPointValue] controlPoint:[self.pathPoints[1] CGPointValue]];
    [self.tempPath setLineWidth:3];
    [self.tempPath addLineToPoint:[self.pathPoints[3] CGPointValue]];   
    [self.tempPath addQuadCurveToPoint:[self.pathPoints[5] CGPointValue]  controlPoint:[self.pathPoints[4] CGPointValue]];
    [self.tempPath addLineToPoint:[self.pathPoints[0] CGPointValue]];
    CAShapeLayer *layer = [CAShapeLayer layer];
    layer.path = [self.tempPath CGPath];
    layer.fillColor = [[UIColor whiteColor] CGColor];
    layer.frame = self.frame;
    self.layer.mask = maskLayer;

//    CAShapeLayer *maskBorderLayer = [CAShapeLayer layer];
//    maskBorderLayer.path = [self.tempPath CGPath];
//    maskBorderLayer.fillColor = [[UIColor clearColor] CGColor];
//    maskBorderLayer.strokeColor = [UIColor  yellowColor].CGColor;
//    maskBorderLayer.lineWidth = 3;
//    [self.layer addSublayer:maskBorderLayer];
    
    
    
}

在ViewContr里

{
 NSArray *tempArr  = @[[NSValue valueWithCGPoint:CGPointMake(60, 80)],[NSValue valueWithCGPoint:CGPointMake(180, 0)],[NSValue valueWithCGPoint:CGPointMake(300, 80)],[NSValue valueWithCGPoint:CGPointMake(240, 180)],[NSValue valueWithCGPoint:CGPointMake(180, 160)],[NSValue valueWithCGPoint:CGPointMake(120, 180)]];
    
    specialShapeView *specialView = [[specialShapeView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

 [specialView setTitle:@"zss" forState:(UIControlStateNormal)];
    
     specialView.titleEdgeInsets = UIEdgeInsetsMake(-self.view.frame.size.height*3/4, 100, 0, 60);
    
    [specialView setImage:[UIImage imageNamed:@"知識點視頻"] forState:(UIControlStateNormal)];
    
    specialView.imageEdgeInsets = UIEdgeInsetsMake(-self.view.frame.size.height*3/4, 100, 0, 60);
    
    [specialView setTitleColor:[UIColor blackColor] forState:(UIControlStateNormal)];

 self.specView = specialView;
    
    specialView.backgroundColor = [UIColor orangeColor];
    
    specialView.pathPoints = [NSMutableArray arrayWithArray:tempArr];
    
    [self.view addSubview:specialView];
    
    [specialView setMask];

 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImage:)];
    
    [specialView addGestureRecognizer:tap];
}
- (void)tapImage:(UITapGestureRecognizer *)tapGestrue{
    CGPoint tapPoint = [tapGestrue locationInView:tapGestrue.view];
    if ([self.specView.tempPath containsPoint:tapPoint]) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"點擊"
                                                       delegate:self
                                              cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alert show];
    }
}

實現(xiàn)效果如下

屏幕快照 2016-10-24 16.14.44.png

因為本人還是個技術(shù)小白,所以寫的非常low,希望多學(xué)習(xí)指教,在這里貼一個鏈接,查資料的時候看到的demo 對學(xué)習(xí)很有幫助
https://github.com/ole/OBShapedButton

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末织盼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子冕象,更是在濱河造成了極大的恐慌睁冬,老刑警劉巖卧须,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡灌砖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門傀蚌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來基显,“玉大人,你說我怎么就攤上這事善炫×糜模” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵箩艺,是天一觀的道長窜醉。 經(jīng)常有香客問我,道長艺谆,這世上最難降的妖魔是什么榨惰? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮擂涛,結(jié)果婚禮上读串,老公的妹妹穿的比我還像新娘聊记。我一直安慰自己,他們只是感情好恢暖,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布排监。 她就那樣靜靜地躺著,像睡著了一般杰捂。 火紅的嫁衣襯著肌膚如雪舆床。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天嫁佳,我揣著相機與錄音挨队,去河邊找鬼。 笑死蒿往,一個胖子當(dāng)著我的面吹牛盛垦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓤漏,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼腾夯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蔬充?” 一聲冷哼從身側(cè)響起蝶俱,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饥漫,沒想到半個月后榨呆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡庸队,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年积蜻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片皿哨。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡浅侨,死狀恐怖纽谒,靈堂內(nèi)的尸體忽然破棺而出证膨,到底是詐尸還是另有隱情,我是刑警寧澤鼓黔,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布央勒,位于F島的核電站,受9級特大地震影響澳化,放射性物質(zhì)發(fā)生泄漏崔步。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一缎谷、第九天 我趴在偏房一處隱蔽的房頂上張望井濒。 院中可真熱鬧,春花似錦、人聲如沸瑞你。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽者甲。三九已至春感,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虏缸,已是汗流浹背鲫懒。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留刽辙,地道東北人窥岩。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像宰缤,于是被迫代替她去往敵國和親谦秧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容