Как изменить положение и размер прямоугольника в реальном времени? - PullRequest
1 голос
/ 19 июня 2011

Я хочу нарисовать прямоугольник и могу изменить его положение и размер в реальном времени.

Я пробовал следующие два метода, но вид не показывает прямоугольник.

вы делаетеУ вас есть какой-либо совет или пример?

признателен за помощь.

используйте рамку вида (новый прямоугольник отображается только при перезапуске приложения)

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);

ничья в розыгрышеRect

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 Ответ

1 голос
/ 19 июня 2011

Я предлагаю вам добавить метод, который перезагружает грани на основе всякий раз, когда вам нужно изменить его.Объявление и массив, который поможет нам отслеживать все добавленные нами представления.

@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];
    }
}

Я ожидаю1008 * для вызова при каких-либо изменениях.numberOfFacesInImage и frameForFaceAtIndex: - это методы, которые вам нужно будет реализовать в зависимости от того, как вы получаете данные.Вы также можете заменить их в соответствии с вашей моделью данных.Не забудьте инициализировать faceViews.

...