Итак, в моем приложении быстрой настройки OS X у меня есть один пользовательский вид и одна кнопка. Когда я запускаю свое приложение, мое представление показывает красный овал, и мне нужно изменить этот рисунок на drawRectangle()
-метод, когда я нажимаю кнопку. КлассИзменение чертежей пользовательских видов при нажатии кнопки в приложении Swift OS X
моего пользовательского вида в MyView
выглядит следующим образом:
import Cocoa
import AppKit
class MyView: NSView {
var isTrue = true
override func drawRect(dirtyRect: NSRect) {
super.drawRect(dirtyRect)
// Drawing code here.
if isTrue {
DrawingMethods.drawOval()
} else {
DrawingMethods.drawRectangle()
}
}
@IBAction func buttonPressed(sender: AnyObject) {
isTrue = false
// Now I need to update the view, so it draws rectangle isntead of oval. How I do that?
}
}
И у меня DrawingMethods
класса:
import Cocoa
public class DrawingMethods: NSObject {
public class func drawOval() {
let color = NSColor(calibratedRed: 1, green: 0, blue: 0, alpha: 1)
let ovalPath = NSBezierPath(ovalInRect: NSMakeRect(64, 54, 50, 45))
color.setFill()
ovalPath.fill()
}
public class func drawRectangle() {
let color = NSColor(calibratedRed: 1, green: 0, blue: 0, alpha: 1)
let rectanglePath = NSBezierPath(rect: NSMakeRect(136, 12, 34, 34))
color.setFill()
rectanglePath.fill()
}
}
Итак, как я могу получить мои пользовательские представления нарисовать прямоугольник вместо овала?
Извините, я очень плохо программирую и плохо владею английским, я не знаю, что означает флаг в этом контексте. Я знаю только «захватить флаг« »:) Так что я должен назвать эту функцию в моей функции« buttonPressed »? Можете ли вы показать в коде, как вы это делаете? – Prontto
Так вот так? setNeedsDisplayInRect (<# invalidRect: NSRect #>) Что я должен положить в круглые скобки? – Prontto
Я обновил ответ. – vacawama