Я работаю над созданием некоторых пользовательских кнопок для приложения, есть несколько значков, и я разработал их все в теории, но у меня возникают проблемы с выяснением, как нарисовать этот надоедливый значок "флажок" в iOS 'Язык UIBezierPath.
Как правило, границы значка - 5 x 5, а границы графического объекта, содержащегося внутри значка, - 3 x 3. (Да, я знаю, что флажок выходит за пределы3 x 3 границы).
Здесь есть и значок флажка, и значок «плюс» (Да, я играю с Corel DRAW 12, ну и что ...):
Видите ли, значок «плюс», я не мог сделать никаких проблем, как это:
class BezierPathFactory {
// "gridSpacing" is expected to be the containing view's width / 5
static func plus(gridSpacing G: CGFloat) -> UIBezierPath {
let path = UIBezierPath()
let startPoint = CGPoint(x:2*G,y:G)
path.move(to: startPoint)
path.addLine(to: CGPoint(x:2*G,y:2*G))
path.addLine(to: CGPoint(x:G,y:2*G))
path.addLine(to: CGPoint(x:G,y:3*G))
path.addLine(to: CGPoint(x:2*G,y:3*G))
path.addLine(to: CGPoint(x:2*G,y:4*G))
path.addLine(to: CGPoint(x:3*G,y:4*G))
path.addLine(to: CGPoint(x:3*G,y:3*G))
path.addLine(to: CGPoint(x:4*G,y:3*G))
path.addLine(to: CGPoint(x:4*G,y:2*G))
path.addLine(to: CGPoint(x:3*G,y:2*G))
path.addLine(to: CGPoint(x:3*G,y:G))
path.addLine(to: startPoint)
path.close()
return path
}
// ...
}
Но, значок флажка заставляет мою голову болеть такплохо.
До сих пор я установил следующее:
Соотношение длины и ширины (повернуто на 45 градусов по часовой стрелке) галочки равно 4: 2
CGPoint в верхнем правом углу флажка идентичен верхнему правому зерну«внутреннее поле (3 x 3)»
Если интервал сетки значка равен 1, то с точки зрения 45 градусов каждый «блок» флажка имеет вид (sqrt (18) / 5) высокий и / или широкий.
Есть ли в доме математики?Где мой дог Александр Сойфер?
Я все еще работаю над этим, но не стесняйтесь попробовать.
Это то, что я имею до сих пор:
static func checkMark(gridSpacing G: CGFloat) -> UIBezierPath {
let blurp = UIBezierPath()
let CM_hyp = sqrt((18*G)/5)
let CM_opp_or_adj = sqrt( ((CM_hyp)*(CM_hyp)) / 2 )
let startPoint = CGPoint(x: 4*G, y: G)
blurp.move(to: startPoint)
blurp.addLine(to: CGPoint(x: (4*G)+CM_opp_or_adj, y: G + CM_opp_or_adj))
blurp.addLine(to: CGPoint(x: 4*G-(3*CM_opp_or_adj), y: 4*G) )
blurp.addLine(to: CGPoint( x: G, y:(4*G) - 2*CM_opp_or_adj ))
blurp.addLine(to: CGPoint( x: G + CM_opp_or_adj, y: (2*G) + CM_opp_or_adj) )
//6
blurp.addLine(to: CGPoint( x: 2*G + CM_opp_or_adj, y: (4*G) - 2*CM_opp_or_adj ) )
blurp.addLine(to: startPoint)
blurp.close()
return blurp
}
Но это выглядит глупо.Я сделал что-то не так.