我发现了这段代码:
func screenShotMethod() {
//Create the UIImage
UIGraphicsBeginImageContext(view.frame.size)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//Save it to the camera roll
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
}
Run Code Online (Sandbox Code Playgroud)
我需要做些什么才能将所有其他元素(如导航栏)添加到屏幕截图中?
我想用其子视图捕获视图.我正在使用此代码捕获屏幕:
let view = self.faceTrackerContainerView
UIGraphicsBeginImageContext(CGSizeMake(view.bounds.size.width, view.bounds.size.height))
UIGraphicsGetCurrentContext()!
self.view?.drawViewHierarchyInRect(view.frame, afterScreenUpdates: true)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)
Run Code Online (Sandbox Code Playgroud)
这些代码捕获整个屏幕,包括位于视图前方的按钮.我尝试了这些代码,但它只捕获主视图,不包括其子视图:
let view = self.faceTrackerContainerView
let scale = UIScreen.mainScreen().scale
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, scale);
view.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)
Run Code Online (Sandbox Code Playgroud)
我也试过snapshotViewAfterScreenUpdates(true)这里,但我不知道如何实现它.我在视图下方有一个collectionView,在视图顶部有一个按钮(两者都不在视图中).第一个代码使用button,collectionView和子视图捕获所有内容.第二个代码捕获没有子视图的视图.我错过了什么?
如何在 iOS 13 中解决此问题?我正在截取 UITextView 内容大小的屏幕截图。直到 iOS 12 一切正常。但是 iOS 13 以后的问题是它没有截取完整的屏幕截图。下面是iOS 12以下和iOS 13之后的输出图片。 低于 iOS 12
下面是我用来截取 UITextView 屏幕截图的代码:
let textView = UITextView()
UIGraphicsBeginImageContextWithOptions(textView.contentSize, textView.isOpaque, 0.0)
let savedContentOffset: CGPoint = textView.contentOffset
let savedFrame: CGRect = textView.frame
textView.frame = CGRect(x: 0, y: 0, width: textView.contentSize.width, height: textView.contentSize.height)
textView.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
textView.contentOffset = savedContentOffset
textView.frame = savedFrame
UIGraphicsEndImageContext()
Run Code Online (Sandbox Code Playgroud)
我得到了这个问题的解决方案 下面是 更新的工作代码
选项 1:- 下面使用 UILabel 的代码
let SCREEN_WIDTH = UIScreen.main.bounds.size.width
let SCREEN_HEIGHT = UIScreen.main.bounds.size.height
func buttonAction() {
let …Run Code Online (Sandbox Code Playgroud) 我需要添加几个标签UIImageView.标签的文本可以通过点击它们来更改.实现这一目标的最佳方法是什么?我正在使用Swift编程语言.在stackoverflow上查找一些解决方案,我发现了一些使用String.drawInRect方法在矩形中绘制一些文本的演练,然后将其放置在UIImageView.但是像这样我认为我不能改变文本,甚至不能识别它们上的触摸事件.请帮忙.
UPDATE
我的代码到目前为止:
override func viewDidLoad() {
super.viewDidLoad()
let img = UIImage(named: "Image")
let imgView = UIImageView(image: img)
self.view.addSubview(imgView)
var myLabel = UILabel()
myLabel.text = "Hello There"
myLabel.textColor = UIColor.redColor()
myLabel.font = UIFont(name: "Marker Felt", size: 20)
myLabel.accessibilityIdentifier = "this is good!"
myLabel.frame = CGRect(x: img!.size.width/2 /* - myLable.width / 2 ? */, y: 0, width: img!.size.width, height: 40)
imgView.addSubview(myLabel)
imgView.userInteractionEnabled = true
myLabel.userInteractionEnabled = true
let tapGesture = UITapGestureRecognizer(target: self, action: "handlePanGesture:")
myLabel.addGestureRecognizer(tapGesture) …Run Code Online (Sandbox Code Playgroud) 我想在我的手机上启用一项允许用户点击共享的功能,然后他们就可以向他们的朋友发送一条消息,默认情况下包含应用的图片(在用户点击共享之前).我无法弄清楚如何做到这一点 - 每当我搜索如何做到这一切时,我得到的是关于如何在手机的照片库或他们的相机中共享图像的教程/答案.关于如何做到这一点的任何想法!
swift ×6
ios ×5
screenshot ×3
calayer ×1
interactive ×1
ios13 ×1
iphone ×1
macos ×1
uiimage ×1
uiimageview ×1
uilabel ×1
uiview ×1