Как добавить пунктирную линию вокруг UIView
.
Что-то вроде этого
ios
objective-c
iphone
uiview
Sohaib
источник
источник
Ответы:
Вы можете установить границу с этим шаблоном, используя Layer и Bezier path, как показано ниже.
Objective-C
Swift 3.1
Вы также можете установить различные типы дизайна, используя рисунок шаблона, как показано ниже.
Здесь вы должны добавить
<QuartzCore/QuartzCore>
фреймворк в проект и импортировать его с нижней строкой вYourViewController.m
файле.источник
Другой способ, если вам нравятся подслои. В init вашего пользовательского представления вставьте это (_border - это ivar):
И в ваших раскладках подпишите:
источник
_border.path = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:5.f].CGPath;
_border.lineWidth = 3
border = CAShapeLayer() border.strokeColor = yourColor border.fillColor = nil border.lineDashPattern = [4, 2] self.layer.addSublayer(border)
Для тех из вас, кто работает в Swift, это расширение класса в UIView делает его легким. Это было основано на ответе sunshineDev.
Чтобы использовать это:
источник
addDashedBorder()
во времяdidMoveToSuperview()
мышления autolayout будет полным тогда и размер кадра будет правильным , но оно не было. Ширина пунктирной границы выходит за пределы ширины вида. Кстати, пунктирная линия выглядит так хорошо! Этоself.frame.size
не правильно.Свифт 3 :
Используйте в раскадровке (как пользовательский класс) или непосредственно в коде:
Результат:
источник
Основываясь на том, что предложил Prasad G, я создал метод внутри класса UIImage Extras со следующим:
Важно отметить, что если вы определите положение вашей фигуры как (0,0), нижний угол границы будет размещен в центре изображения, поэтому я установил его на: (frameSize.width / 2, frameSize .height / 2)
Затем я использую свой метод для получения пунктирной границы, используя UIImage моего UIImageView, и добавляю CAShapeLayer в качестве подслоя слоя UIImageView:
источник
Используйте метод CGContextSetLineDash ().
Я думаю, что это будет полезно для вас.
источник
Вот подкласс UIView, который может работать для любого проекта, он также работает для круглых представлений:
Таким образом, вы можете редактировать из раскадровки так:
Пара результатов:
источник
Для этого вам нужно добавить CAShapeLayer для этого конкретного объекта
источник
Swift 4.2
На основании ответа rmooney как
UIView
расширения с настраиваемыми параметрами, для которых установлены значения по умолчанию.источник
shapeLayer.lineJoin = CAShapeLayerLineJoin.round
должно бытьyourViewBorder.lineJoin = kCALineJoinRound
Быстрая версия ответа QuartzCore.
Этот
CAShapeLayer
подход работает, но подход QuartzCore лучше подходит для обработки перезагрузки табличного представления, если онUIView
находится внутри ячейки.Для изображения вы можете использовать что-то вроде этого (оно действительно маленькое):
Я предпочитаю вектор, а не PNG, когда мне это удается:
Images.xcassets
создайтеNew Image Set
под названием dottedPatternScale Factors
ToSingle Vector
источник
Для Xamarin.iOS пунктирная / пунктирная граница.
источник
В Свифт 3
источник
Это если вы хотели это в Swift 2
источник
попробуйте ниже код
для одного, как ниже
источник
Для Swift 5
Как добавить
Как снова убрать границу
источник
В итоге я создал IB Designable с использованием некоторых реализаций @Chris:
CurvedDashedBorderUIVIew.h:
CurvedDashedBorderUIVIew.m:
затем просто установите его в xib / storyboard:
источник
Быстрое решение с пользовательским классом, работающим с autolayout
настроено от @Iain Smith
источник
Вы можете просто создать класс IBDesignable следующим образом:
Тогда просто создайте подкласс вашего представления с BorderedView из Xcode. Таким образом, вы можете легко установить цвет границы и ширину границы из конструктора интерфейса!
источник
} и вызовите эту функцию в viewdidLoad () с задержкой:
источник
• Swift 5
• Работает с autolayout
• Работает с угловым радиусом
источник
В Swift 4 я создал расширение UIView со следующей функцией:
источник
Если вы хотите, чтобы это работало с cornerRadius, попробуйте это
источник
Свифт 5+
Как пользоваться:
источник