2011-06-19 92 views
1

我想繪製一個矩形,並且可以實時更改矩形的位置和大小。如何實時更改矩形的位置和大小?

我試過以下兩種方法,但視圖不顯示矩形。

你有什麼建議或例子嗎?

感謝您的幫助。

使用視圖幀(只重新啓動應用程序時顯示新的矩形)

UIView * drawView = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 10, 10)]; 
[self.view addSubview:drawView]; 
drawView.layer.borderColor = [[UIColor orangeColor] CGColor]; 
drawView.layer.borderWidth = 2; 

drawView.frame = CGRectMake(r.x, r.y, r.width, r.height); 

平局在drawRect中

fav = [[FaceAugmentingView alloc] initWithFrame:[imageView frame]]; 
fav.backgroundColor = [UIColor clearColor]; 
[self.view addSubview: fav ]; 
fav.face = CGRectMake(r.x, r.y, r.width, r.height); 
[fav setNeedsDisplay]; 
+1

如果您不告訴我們您正在使用哪種語言/開發環境,我們無法提供幫助。 – Jonathan

+0

它被標記爲iphone - 這意味着Xcode/Objective-C/Cocoa-Touch在*大多數情況下。 – Abizern

回答

1

我建議你添加一個重新加載的方法無論何時你需要改變它都會面臨基礎。聲明和數組可以幫助我們跟蹤所有添加的視圖。

@interface FacesViewController: UIViewController 
[..] 
@property (nonatomic, retain) NSMutableArray * faceViews; 

- (void)reloadFaces; 
[..] 
@end 

,然後實現reloadFaces是這樣的 -

- (void)reloadFaces { 
    /* remove all current views we've added */ 
    for (UIView * aView in self.faceViews) { 
     [aView removeFromSuperview]; 
    } 
    [self.faceViews removeAllObjects]; 

    /* Add news ones */ 
    int numberOfFaces = [self numberOfFacesInImage]; 
    for (int i = 0; i < numberOfFaces; i++) { 
     CGRect faceFrame = [self frameForFaceAtIndex:i]; 

     UIView * drawView = [[[UIView alloc] initWithFrame:faceFrame] autorelease]; 
     drawView.layer.borderColor = [[UIColor orangeColor] CGColor]; 
     drawView.layer.borderWidth = 2; 
     drawView.frame = CGRectMake(r.x, r.y, r.width, r.height); 

     [self.view addSubview:drawView]; 
     [faceViews addObject:drawView]; 
    } 
} 

我希望reloadFaces當有某種形式的變化被調用。 numberOfFacesInImageframeForFaceAtIndex:是您必須根據您如何獲取數據來實現的方法。您也可以替換它們以適合您的數據模型。不要忘記初始化faceViews

+0

我已經嘗試了這兩種方法,但視圖不顯示矩形 –

+0

實時你的意思是你想讓它跟隨觸摸? –

+0

不跟隨觸摸。當我檢測到一張臉時,我想在臉上繪製一個矩形。對於第一種方法,只有當我重新啓動應用程序時,它纔會顯示該視圖,然後它不會改變。我需要重新啓動應用程序才能讓其新框架可用。你有什麼建議嗎?感謝您的幫助 –

相關問題