Нарисуйте горизонтальные и вертикальные линии в представлении контроллера uiview - PullRequest
0 голосов
/ 29 января 2012

У меня есть UIViewController с некоторыми изображениями. Мне нужно нарисовать несколько горизонтальных и вертикальных линий между изображениями. На самом деле это похоже на иерархическое представление. Является ли добавление подпредставлений с цветом фона лучшим способом?

Ответы [ 4 ]

4 голосов
/ 29 января 2012

У вас есть 3 основных подхода:

  1. Использование QuartzCore и переопределение drawRect: в пользовательском подклассе UIView
  2. Установите borderWidth и borderColor свойства слоя UIImageView, которое содержит каждое изображение
  3. Создание UIViews высоты 1 для горизонтальных линий и ширины 1 для вертикальных линий, установите backgroundColor видов и добавьте их в качестве подпредставлений

3, вероятно, самый простой для реализации, но не самый элегантный, 1 - самый надежный с точки зрения памяти, поскольку вы также можете использовать drawInRect для рисования ваших изображений в том же графическом контексте. Это сворачивает иерархию представления в одно представление.

3 голосов
/ 29 января 2012

Вы можете сделать это, используя слои, как указано выше, или просто, если вы хотите просто линии, используйте UIViews

Так же, как это

for(i=0;i<numberOfLine*heightofImage;i+=heightOfImage) {
    UIView *horizontalLine=[[UIView alloc]initWithFrame:CGRectMake(x, i, height, 1)];
    [self.view addSubView:horizontalLine];
}

Надеюсь, что поможет

1 голос
/ 31 мая 2015
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    UIView *verticalLine = [[UIView alloc] initWithFrame:CGRectMake(roundf(self.view.bounds.size.width / 2), 0.0, 1.0, self.view.bounds.size.height)];
    verticalLine.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.5];
    verticalLine.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin;
    [self.view addSubview:verticalLine];

    UIView *horizontalLine = [[UIView alloc] initWithFrame:CGRectMake(0.0, roundf(self.view.bounds.size.height / 2), self.view.bounds.size.width, 1.0)];
    horizontalLine.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.5];
    horizontalLine.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
    [self.view addSubview:horizontalLine];
}
0 голосов
/ 29 января 2012

Я использовал третий вариант, опубликованный Magic Bullet Dave, и он отлично работает.Вот код:

UIView *borderBottom = [[UIView alloc] initWithFrame:CGRectMake(0.0, 10, widthDesired, 1.0)];
borderBottom.backgroundColor = [UIColor grayColor];
[myView addSubview:borderBottom];

Если вы хотите сделать вертикальную линию, вы просто используете ширину 1, а затем нужную высоту.

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