0
我有一個UIImage
,我試圖在特定點進行顯示,但是當我打電話:的UIImage不會在屏幕上顯示
image.draw(at: CGPoint.zero)
圖像從不顯露。但是,如果我創建的圖像UIImageView
和ImageView的添加到我的視圖層次的UIStackViews
之一,圖像清楚地顯示。我怎樣才能在窗口的原點畫出我的形象?
我有一個UIImage
,我試圖在特定點進行顯示,但是當我打電話:的UIImage不會在屏幕上顯示
image.draw(at: CGPoint.zero)
圖像從不顯露。但是,如果我創建的圖像UIImageView
和ImageView的添加到我的視圖層次的UIStackViews
之一,圖像清楚地顯示。我怎樣才能在窗口的原點畫出我的形象?
那些繪製方法不畫到UIWindow
s/UIView
s,它們畫到目前CGContext
。
退房的文檔:https://developer.apple.com/reference/uikit/uiimage/1624132-draw「在目前情況下指定點繪製的圖像。」
例如:
UIGraphicsBeginImageContext(image.size)
image.draw(at: CGPoint.zero)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
如果你想有某種圖像視圖或任何以「漂浮在」您的應用程序,你可以做到這一點的容器視圖控制器。
以下示範操場一個簡單的例子,其中紅色廣場的形象圖「浮」在應用上面:
//: Playground - noun: a place where people can play
import UIKit
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
class ContainerViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
addImageViewOverlay()
}
func addImageViewOverlay() {
let overlayImageView = UIImageView()
overlayImageView.backgroundColor = UIColor.red
overlayImageView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(overlayImageView)
overlayImageView.widthAnchor.constraint(equalToConstant: 50.0).isActive = true
overlayImageView.heightAnchor.constraint(equalToConstant: 50.0).isActive = true
overlayImageView.topAnchor.constraint(equalTo: view.topAnchor, constant: 10.0).isActive = true
overlayImageView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 10.0).isActive = true
}
func embed(childController: UIViewController) {
// In a real application you'd remove the existing child controller first
addChildViewController(childController)
childController.view.translatesAutoresizingMaskIntoConstraints = false
view.insertSubview(childController.view, at: 0)
childController.didMove(toParentViewController: self)
childController.view.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
childController.view.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
childController.view.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
childController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
}
}
let containerController = ContainerViewController(nibName: nil, bundle: nil)
containerController.view.frame = CGRect(x: 0.0, y: 0.0, width: 320.0, height: 480.0)
let applicationController = UITabBarController(nibName: nil, bundle: nil)
let tabOneController = UIViewController(nibName: nil, bundle: nil)
tabOneController.title = "One"
let tabTwoController = UIViewController(nibName: nil, bundle: nil)
tabTwoController.title = "Two"
applicationController.viewControllers = [tabOneController, tabTwoController]
containerController.embed(childController: applicationController)
PlaygroundPage.current.liveView = containerController.view
所以如何將我畫的形象窗口的由來? – shoe
你必須添加'UIImageView'作爲窗口的子視圖,這是不好的做法。如果您想要在整個應用程序的頂部顯示某種圖像,請查看使用容器視圖控制器。它可以包含你的應用程序的主要內容視圖控制器,並提供一些可以在頂部顯示的附件視圖。 –
我給答案添加了一個操場,以顯示如何完成此操作。 –