У меня есть чувство, что проблема заключается в моих ограничениях, но есть идеи, почему мой рисунок холст появляется только после прикосновения? Похоже, где я ожидаю, но опять же, только после того, как область затронута. Я установил фон вид на белый, так что даже когда они не являются штрихами, она должна быть, по крайней мере, там пусты. Я заметил, что холст также растягивается шире, чем следовало бы, он должен составить линейку с коробкой. Я следую учебнику 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
Почему Uiview появляется только после его трогательного? ⇐ IOS
Программируем под IOS
-
Anonymous
1752360975
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
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79699639/why-does-uiview-only-appear-after-its-touched[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия