Я хочу создать идеально закругленный прямоугольник (круг) и нарисовать его на экране. Я проверил свой код на детской площадке, и он успешно рисует UIBezierPath. Тем не менее, он не красиво рисует его в симуляторе iOS. Вот код, я работал на:Несоблюдение() UIBezierPath
class Circles {
//Defining the rounded rect (Circle)
func roundRect(radius: CGFloat, angle: CGFloat) -> UIBezierPath {
//Creating the rounded the rectangle (Circle)
var roundedRect = UIBezierPath()
roundedRect.addArcWithCenter(CGPointZero, radius: radius,
startAngle: 0, endAngle: angle ,
clockwise: true)
return roundedRect
}
//Drawing the Bezier Path (Circle)
func drawRect(rect: UIBezierPath){
rect.moveToPoint(self.point)
UIColor.blackColor().setStroke()
rect.stroke()
}
//Giving the rounded rect (Circle) it's position
var point = CGPointMake(500, 500)
}
//Giving the rounded rect (Circle) it's size
var newRect = Circles().roundRect(200.0, angle: 7)
//Drawing the rounded rect (Circle)
Circles().drawRect(newRect)
Я видел некоторые другие посты с подобными проблемами от несколько лет назад, однако они были в Objective-C, я пытался переводить, но не было никакой пользы , Я также попробовал несколько других способов рисования пути на экране, но, к сожалению, это бесполезно. Я тестировал его, чтобы убедиться, что функции работают с операторами println, проблема в том, что я не знаю, почему такт не активируется. Спасибо за чтение, -Зач.
Вот обновленная версия, используя то, что Майк сказал:
class CircleView: UIView {
override func drawRect(rect: CGRect) {
// Creating the rectangle's size
var newRect = Circles().roundRect(200.0, angle: 7)
//Drawing the rectangle
Circles().drawRect(newRect)
}
//Holding all to do with the circle
class Circles {
//Defining the rounded rect (Circle)
func roundRect(radius: CGFloat, angle: CGFloat) -> UIBezierPath {
//Creating the rounded rect (Circle)
var roundedRect = UIBezierPath()
roundedRect.addArcWithCenter(CGPointZero, radius: radius,
startAngle: 0, endAngle: angle ,
clockwise: true)
return roundedRect
}
//Drawing the Bezier Path (Circle)
func drawRect(rect: UIBezierPath){
rect.moveToPoint(self.point)
UIColor.blackColor().setStroke()
UIColor.blackColor().setFill()
rect.stroke()
rect.fill()
}
//Giving the rounded rect (Circle) it's position
var point = CGPointMake(500, 500)
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//Generating the background
self.view.backgroundColor = UIColor(patternImage: UIImage(named: "normalpaper.jpg"))
let circleView = CircleView(frame: self.view.bounds)
self.view.addSubview(circleView)
}
Это работает для меня в симуляторе с Xcode6 GM. Как вы называете 'Circles.drawRect (...)' когда вы тестируете его в симуляторе? –
Что вы имеете в виду, как вы называете 'Circles.drawRect (...)'? Я называю это «Круги(). DrawRect (newRect)» внизу в примере кода. Я также использую 6.1 beta not 6 GM @Mike S – Althonos
Извините, мне кажется, я должен был сказать: ** Где ** вы вызываете 'Circles.drawRect', когда вы тестируете этот код в симуляторе? Возможно, в пользовательской функции 'drawRect' UIView? –