Подтвердить что ты не робот

Как нарисовать линию в построителе интерфейса в Xcode 4

Я хотел бы нарисовать простую строку вставки в Interface Builder, чтобы отделить некоторые элементы в списке и сделать интерфейс более аккуратным. Я не вижу никаких "строк" ​​или подобных объектов в библиотеке объектов и не может найти никаких команд рисования в построителе интерфейса.

4b9b3361

Ответ 1

Я использую очень узкий UIView с backgroundColor, установленным в соответствующий цвет.

Ответ 2

В библиотеке пользовательского интерфейса iPhone нет строк. Эта функциональность на Max OS X была предоставлена ​​NSBox, но на iPhone нет соответствующего элемента пользовательского интерфейса.

Ответ 3

Если вы боитесь, что UIView может повлиять на производительность, вы можете нарисовать строку в коде с помощью CAShapeLayers от CoreGraphics.

Каждый UIView имеет CALayer, поэтому нарисуйте строку и добавьте ее в CALayer. Вы можете сделать это либо в пользовательском UIView drawRect, либо в контроллере вида:

(Обязательно добавьте квитанцию ​​в свой проект)

UIBezierPath *linePath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0,self.view.frame.size.width, 1)];

//shape layer for the line
CAShapeLayer *line = [CAShapeLayer layer];
line.path = [linePath CGPath];
line.fillColor = [[UIColor blackColor] CGColor];
line.frame = CGRectMake(xPosition, yPosition, self.view.frame.size.width,1);

[self.view.layer addSublayer:line];

Ответ 4

Вместо вида, почему бы просто не использовать ярлык и не установить соответствующий цвет фона?

Ответ 5

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

Ответ 6

Интерфейс Builder не позволяет рисовать тени, необходимые для строки вставки. Если вы работаете с Photoshop, вы это знаете.

Следующий код рисует "вставку", если линия находится перед белым/бежевым фоном.

UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 1.0f)];
line.backgroundColor = [UIColor colorWithRed:(200.0f/255.0f) green:(200.0f/255.0f) blue:(200.0f/255.0f) alpha:1.0f];
line.layer.shadowColor = [UIColor darkGrayColor].CGColor;
line.layer.shadowOffset = CGSizeMake(0.0f, 1.0f);
line.layer.shadowRadius = 0.5f;
line.layer.shadowOpacity = 0.4f;
line.layer.masksToBounds =NO;
[Background addSubview:line];

Не забудьте импортировать < QuartzCore/QuartzCore.h > .

Ответ 7

Как аллитеративный - в Interface Builder добавьте представление, высота которого установлена ​​в 2 точки. Подключите IBOutlet к этому виду и установите цвет и ширину границы слоя:

self.mySeparatorLine.layer.borderWidth = 1.0f; self.mySeparatorLine.layer.borderColor = [UIColor lightGrayColor].CGColor;