Почему Uiview появляется только после его трогательного?IOS

Программируем под IOS
Ответить
Anonymous
 Почему Uiview появляется только после его трогательного?

Сообщение Anonymous »

У меня есть чувство, что проблема заключается в моих ограничениях, но есть идеи, почему мой рисунок холст появляется только после прикосновения? Похоже, где я ожидаю, но опять же, только после того, как область затронута. Я установил фон вид на белый, так что даже когда они не являются штрихами, она должна быть, по крайней мере, там пусты. Я заметил, что холст также растягивается шире, чем следовало бы, он должен составить линейку с коробкой. Я следую учебнику https://www.kodeco.com/5895-uikit drawing-tum Форматирование, поэтому я не использовал их базу, но использовал их логику рисунка. Что я должен изменить, чтобы появиться пустой холст? < /P>
import Foundation
import UIKit

class DrawingGameVC: UIViewController {

@IBOutlet weak var NewStrokeView: UIImageView!

@IBOutlet weak var ExistingDrawing: UIImageView!

@IBAction func drawRed(_ sender: Any) {
}
var lastPoint = CGPoint.zero
var color = UIColor.black
var brushWidth: CGFloat = 10.0
var opacity: CGFloat = 1.0
var swiped = false
override func touchesBegan(_ touches: Set, with event: UIEvent?) {
guard let touch = touches.first else {
return
}
swiped = false
lastPoint = touch.location(in: view)
}
func drawLine(from fromPoint: CGPoint, to toPoint: CGPoint) {
// 1
UIGraphicsBeginImageContext(view.frame.size)
guard let context = UIGraphicsGetCurrentContext() else {
return
}
NewStrokeView.image?.draw(in: view.bounds)

// 2
context.move(to: fromPoint)
context.addLine(to: toPoint)

// 3
context.setLineCap(.round)
context.setBlendMode(.normal)
context.setLineWidth(brushWidth)
context.setStrokeColor(color.cgColor)

// 4
context.strokePath()

// 5
NewStrokeView.image = UIGraphicsGetImageFromCurrentImageContext()
NewStrokeView.alpha = opacity
UIGraphicsEndImageContext()
}

override func touchesMoved(_ touches: Set, with event: UIEvent?) {
guard let touch = touches.first else {
return
}

// 6
swiped = true
let currentPoint = touch.location(in: view)
drawLine(from: lastPoint, to: currentPoint)

// 7
lastPoint = currentPoint
}
override func touchesEnded(_ touches: Set, with event: UIEvent?) {
if !swiped {
// draw a single point
drawLine(from: lastPoint, to: lastPoint)
}

// Merge tempImageView into mainImageView
UIGraphicsBeginImageContext(ExistingDrawing.frame.size)
ExistingDrawing.image?.draw(in: view.bounds, blendMode: .normal, alpha: 1.0)
NewStrokeView?.image?.draw(in: view.bounds, blendMode: .normal, alpha: opacity)
ExistingDrawing.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
NewStrokeView.image = nil
}

}


Подробнее здесь: https://stackoverflow.com/questions/796 ... ts-touched
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»