我認爲從OS X的某些觀點來看,對於iOS而言,這些內容可能會出現在視圖邊界之外? (對於UIView的)但是,如果我創建了一個全新的單一視圖的應用程序,並創建了子類的UIView一個MyView的類,並實現其的drawRect:在iOS上,drawRect無法在視圖邊界之外繪製?
- (void)drawRect:(CGRect)rect
{
// Drawing code
UIBezierPath *path = [UIBezierPath bezierPathWithRect:
CGRectMake(-20, -20, 600, 600)];
[[UIColor greenColor] set];
[path fill];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor blueColor] CGColor]);
CGContextFillRect(context, CGRectMake(-20, -20, 600, 600));
}
我同時使用的用戶界面和CG繪製一個矩形各,只是在案件一方有效,另一方不起訴。而該視圖viewDidAppear
補充說:
- (void)viewDidAppear:(BOOL)animated {
MyView *myView = [[MyView alloc] initWithFrame:CGRectMake(20, 20, 260, 260)];
[self.view addSubview:myView];
}
但無論怎樣,彩色框不會超越(20, 20, 260, 260)
區域。確實只有CALayers可以自由添加並出現在視圖範圍之外?是否因爲圖形上下文僅限於此(20, 20, 260, 260)
開頭?如果是這樣,有沒有辦法讓drawRect
內容出現在視圖邊界以外的所有四個頂部,下部,左側,右側?
我可以問一下,爲什麼你想在可見矩形的外面畫,因爲它不可見?如果您計劃在稍後顯示它,則應正確提及CALayer。 – Lefteris
其中一個原因是,我正在考慮實現具有圓角的PopoutScrollView,甚至是「像雲一樣的邊緣」。我發現我可以繼承UIView並擁有一個UIScrollView作爲屬性,所以scrollview是視圖的子視圖,而且我實際上必須重寫'addSubview'來添加到'self.scrollView'。這是因爲我不能簡單地在scrollView上繪製邊框,否則它們會滾動。這可能會很複雜,我想,爲什麼不只是UIScrollView的子類,並在drawRect中繪製邊界外?那麼我不必重寫這麼多方法。 –
儘管我還沒有嘗試過這個,但我沒有看到這種不工作的原因,通過scrollview.layer.cornerRadius屬性添加圓角到scrollview,應該爲你做到這一點。 此外,如果你打算修改一個scrollView,你應該繼承scrollview和它的drawRect方法,而不是一個UIView – Lefteris