2013-01-08 55 views
0

我正在嘗試爲UIView創建一個名爲'CoverView'的自定義形狀。iPhone SDK通過裁剪UIView創建自定義UIView

目前我有設置在框架...

[CoverView setFrame:CGRectMake(0, 0, 1808, 303)]; 

我想創建一個自定義形狀UIView的有從UIView的頂部中間切出一個200×200。基本上,刪減將有一個框架(804,0,200,200)。

任何幫助將不勝感激。

+0

一個UIView總是矩形的,但也許添加一個有背景的子視圖來匹配你的覆蓋視圖背後的背景? –

+0

我有CoverView屏蔽了很多按鈕,我不想在應用程序的某些操作過程中觸摸它們,但是有一個CoverView屏蔽的按鈕需要使用。我明白你對添加另一個子視圖的看法,或者在我的情況下,將另一個按鈕添加到CoverView中。我希望能夠以某種方式改變CoverView來做我想到的事情。我能夠掩蓋CoverView,但下面的按鈕仍然不可用。看到下面的代碼... – OscarTheGrouch

+0

我用http://stackoverflow.com/questions/1054937/programmatically-send-to-front-back-elements-created-from-interface-builder以編程方式更改按鈕的順序和CoverView根據需要,仍然看起來不像我想要的那樣,但它的功能就像它需要的一樣。 – OscarTheGrouch

回答

2

我能夠爲CoverView創建一個遮罩,它可視化地創建了我正在查找的內容,但視圖遮罩下可以看到的任何按鈕都無法按下,因爲CoverView仍在它們之上。代碼如下。關於如何使用視圖孔中的按鈕可以使用的任何建議?

CGMutablePathRef maskPath = CGPathCreateMutable(); 
     CGPathMoveToPoint(maskPath, NULL, 0, 0); 
     CGPathAddLineToPoint(maskPath, NULL, 804, 0); 
     CGPathAddLineToPoint(maskPath, NULL, 804, 200); 
     CGPathAddLineToPoint(maskPath, NULL, 1004, 200); 
     CGPathAddLineToPoint(maskPath, NULL, 1004, 0); 
     CGPathAddLineToPoint(maskPath, NULL, 1808, 0); 
     CGPathAddLineToPoint(maskPath, NULL, 1808, 303); 
     CGPathAddLineToPoint(maskPath, NULL, 0, 303); 
     CGPathAddLineToPoint(maskPath, NULL, 0, 0); 
     CGPathCloseSubpath(maskPath); 

     CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
     maskLayer.frame = CoverView.bounds; 
     maskLayer.path = maskPath; 
     CoverView.layer.mask = maskLayer;