Для swift 5 и наибольшей гибкости
Определите расширение с помощью функции roundCorners
extension UIButton {
func roundCorners(corners: UIRectCorner, radius: Int = 8) {
let maskPath1 = UIBezierPath(roundedRect: bounds,
byRoundingCorners: corners,
cornerRadii: CGSize(width: radius, height: radius))
let maskLayer1 = CAShapeLayer()
maskLayer1.frame = bounds
maskLayer1.path = maskPath1.cgPath
layer.mask = maskLayer1
}
}
Вызовите roundCorners Функция
myButton.roundCorners(corners: [.topLeft, .topRight])
Или с определенным радиусом
myButton.roundCorners(corners: [.topLeft, .topRight], radius: 20)
Интересный вопрос. Первоначально мы думали использовать выходные данные чего-то вроде анализатора спектра WiSpy . Мне нравится идея использования направленной антенны. Похоже, что некоторые исследования (могут) еще продолжаются.
Вы не можете использовать метод GPS, потому что время не может быть достаточно точным.
Лучшее, что вы можете сделать, это Трилатерация на основе мощности сигнала от каждой базовой станции и предположить, что диапазон пропорционален сигналу.
Возможно, вам потребуется принудительно установить соединение с каждой базовой станцией по очереди, чтобы измерить мощность сигнала.
На самом деле я думаю, вам следует попробовать использовать алгоритм, подобный алгоритму GPS ( wikipedia ) .. конечно, вы можете упростить его в соответствии с вашими потребностями, например:
, поэтому, если вы разместите по крайней мере 4 вещателя, вы можете выполнить триангуляцию для каждого клиента, чтобы он мог рассчитать свою позицию. Естественно, что bcasters должны быть как можно более похожими в ответах ..
кстати, это всего лишь идеи ..
Использование силы сигнала для определения расстояния может быть легко отклонено из-за различий в материалах, блокирующих прямую видимость каждой из точек отбора проб. Вероятно, было бы лучше выполнить выборку с помощью направленной антенны и из каждой точки выборки найти пеленг, который максимизирует мощность сигнала для каждого устройства, которое вы хотите найти. С помощью этого метода вы можете использовать только два или три места отбора проб, в зависимости от точности, с которой вы можете оценить подшипники.
Вместо тренировки вы можете использовать билинейную интерполяцию. Говорят, что это лучше для нелинейного расстояния, а также данные прочности сигнала, такие как WiFi в городской среде. http://courses.cit.cornell.edu/ee476/finalprojects/s2007/finalprojects/s2007/AYL26_YM82/AYL26_YM82/index.htm имеет фоновую математику и то, что я предполагаю, это AVR C для выполнения его с датчиками магнитного поля. Отказ