Я хотел бы нарисовать простую строку вставки в Interface Builder, чтобы отделить некоторые элементы в списке и сделать интерфейс более аккуратным. Я не вижу никаких "строк" или подобных объектов в библиотеке объектов и не может найти никаких команд рисования в построителе интерфейса.
Как нарисовать линию в построителе интерфейса в Xcode 4
Ответ 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;