Три решения, о которых я могу думать:
-(void)drawRect
; UIImageView
с изменяемым размером; растягиваемое изображение ваших границ в качестве фона (лучшее решение по производительности). Это невозможно с одним экземпляром UIView
без добавления слоев.
Что вы можете сделать, так это создать представление, которое больше необходимого, установить его границу соответствующим образом, а затем добавить CALayer
и поместите его туда, где вы хотите внутреннюю границу, и соответствующим образом установите его свойства границы.
Использование CALayers
обычно быстрее, чем полноэкранный UIView
, но вы также можете просто иметь вложенный UIView
добиться такого же эффекта.
Попробуйте это,
Я добавляю тень с альфа-1, которая будет действовать как внутренняя граница. И нормальная граница задается как внешняя граница.
yourView.frame = CGRectInset(yourView.frame, -borderWidth, -borderWidth);
yourView.layer.borderColor = [UIColor blackColor].CGColor;
yourView.layer.borderWidth = borderWidth;
yourView.layer.shadowColor = [UIColor whiteColor].CGColor;
yourView.layer.shadowOffset = CGSizeMake(0, 1);
yourView.layer.shadowOpacity = 1;
yourView.layer.shadowRadius = 1.0;
yourView.clipsToBounds = YES;
Это невозможно, вам придется подделать границы, добавив UIView
с цветом фона в xib / view.