2015-06-09 3 views
1

Я пытаюсь создать пользовательский вид, который содержит несколько изображений. Я делаю это, добавляя их программно. Проблема в том, что эти подпункты перекрывают друг друга, и я не могу найти способ изменить это. Единственное решение, которое я вижу, - это делать что-то вроде установки фреймов для каждого нового изображения программно. Буду признателен, если кто-нибудь скажет мне, что является лучшим способом решить эту проблему.Проблема с перекрытием subviews

for (id image in self.images) { 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
    [self.imageViews addObject:imageView]; 
    [self addSubview:imageView]; 
} 
+0

Как вы хотите, чтобы собрать их, как несколько изображений в одном изображении или вы хотите что-то вроде UICollectionView? –

+1

Вам нужно [определить кадр] [1] для каждого UIImageView или использовать [ограничения] [2] для их компоновки. [1]: http://stackoverflow.com/questions/19442142/changing-the-position-of-uiview [2]: http://stackoverflow.com/questions/12826878/creating -layout-constraints-программно – Shai

+1

Да, поскольку @grhnkdlk сказал, что U может показать их как ячейки в UICollectionView. Возможно, это лучший способ сделать это. Он дает всю гибкость компоновки, а U может регулировать поля, количество изображений, ручку и т. Д. Но если U нужен простой способ добавить только несколько изображений в пользовательский вид, возможно несколько изображений, которые могут существовать или, возможно, не зависят от какого-либо условия: 1) Установите кадры и, возможно, маску авторазмера (но будьте готовы к возможному проблемы с макетом, если изменения ориентации) 2) Или установить ограничения автоопределения и не использовать кадры вообще – David

ответ

2

Без использования Interface Builder ваши единственные реальные варианты - изменить рамку или центр.

imageView.frame = CGRectMake(x coord, y coord, width, height); 

Этот метод позволяет изменять размер и перемещать в то время как изменения центра позволяет сделать это, переместить центр вида.

или

imageView.center = CGPointMake(x coord, y coord); 

Или, как это рекомендовано добавить ограничения.

+0

Спасибо)) Это было!) – AOY

3

Если вы хотите сделать свой customView наподобие UICollectionView, вам понадобится UIScrollView и добавьте в него subviews. Everytime при добавлении места изменения кадра подвида так что это может быть что-то вроде этого:

int xPosition = 0; 
int yPosition =0; 
for (id image in self.images) { 

    if (xPosition>self.view.frame.size.width) { 
     //give size to every imageView and every time in loop change the location 
     UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(xPosition, yPosition, 50, 50)]; 
     imageView.image = image; 
     yPosition = yPosition + 50; 
     [self.view addSubView:imageView]; 
    } 
    else { 
     UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(xPosition, yPosition, 50, 50)]; 
     imageView.image = image; 
     xPosition = xPosition + 50; 
     [self.view addSubView:imageView]; 

    } 


} 
+0

Большое вам спасибо за этот ответ! – AOY

Смежные вопросы