Два UIImageViews с одинаковым кадром, но точно не перекрываются - PullRequest
0 голосов
/ 14 ноября 2011

Первый UIImageView создается с фреймом (0,38,250,250), а второй UIImageView создается с фреймом первого вида и добавляется как вспомогательный вид первого изображения. Результат показывает, что первый вид изображения не полностью покрыт вторым видом изображения. Почему оба взгляда не перекрываются? Я назначил два просмотра изображений с разными цветами фона, чтобы их было легче увидеть.

UIImageView *firstView = [[[UIImageView alloc] initWithFrame:CGRectMake(0,38,250,250)] autorelease];
[firstView setBackgroundColor:RGBACOLOR(36, 39, 39, 0.8)];
[self.view addSubview:firstView];

UIImageView *itemPic = [[[UIImageView alloc] initWithFrame:firstView.frame] autorelease];
itemPic.image = [UIImage imageNamed:@"color_c.png"];
[itemPic setBackgroundColor:RGBACOLOR(150, 150, 35, 0.8)];
[firstView addSubview:itemPic];

two imageviews are not exactly overlapped

Ответы [ 3 ]

3 голосов
/ 14 ноября 2011

Кадры определены в разных системах координат. Кадр каждого вида определяется в системе координат его родительского вида. Эта система координат обычно имеет (0,0, 0,0) в верхнем левом углу родительского представления. Подвид с кадром, который не имеет источника (0.0, 0.0), не будет выравниваться с его родительским представлением.

Чтобы всегда выровнять подпредставление и заполнить его родительское представление, используйте:

view.frame = parentView.bounds;
1 голос
/ 14 ноября 2011

Если вы хотите добавить второй вид к первому, а затем создать кадр для второго CGRectMake(0, 0, 250, 250); В этом случае оба вида будут иметь одинаковые координаты.

Если вы хотите добавить второе подпредставление к self.view, создайте его с помощью firstView.frame. В этом случае оба вида будут иметь одинаковые координаты.

1 голос
/ 14 ноября 2011

Подвид смещается на смещение кадра, которое вам нужно initWithFrame:firstView.bounds.Bound - это CGRect, который не имеет смещения (начало координат - 0,0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...