how to obtain default preview image from drag and drop operation
When the user initiates a drag and drop operation, ios drag and drop functionality automatically assigns a preview image (unless there is specifically a UITargetedDragPreview
assigned) that is positioned under the current touch. Here is an example image:
I want to obtain this preview image shown besides the "+" symbol.
My attempt so far was to use the UIDropInteractionDelegate
method dropInteraction(_:previewForDropping:withDefault:)
:
func dropInteraction(_ interaction: UIDropInteraction, previewForDropping item: UIDragItem, withDefault defaultPreview: UITargetedDragPreview) -> UITargetedDragPreview? {
let image = getImageTest(from: defaultPreview.view.layer)
return defaultPreview
}
where image should be the desired preview image and getImageTest
is defined as a simple function to obtain an UIImage from the CALayer
content:
func getImageTest(from layer: CALayer) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(layer.frame.size, layer.isOpaque, UIScreen.main.scale)
guard let context = UIGraphicsGetCurrentContext() else {
UIGraphicsEndImageContext()
return nil
}
layer.render(in: context)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
Unfortunately image
is a solid black image with the right size but no content. Further analysis yields that indeed the defaultPreview.view.layer
CALayer
has no contents.
So, how can I obtain the preview image?
ios swift drag-and-drop ios11
add a comment |
When the user initiates a drag and drop operation, ios drag and drop functionality automatically assigns a preview image (unless there is specifically a UITargetedDragPreview
assigned) that is positioned under the current touch. Here is an example image:
I want to obtain this preview image shown besides the "+" symbol.
My attempt so far was to use the UIDropInteractionDelegate
method dropInteraction(_:previewForDropping:withDefault:)
:
func dropInteraction(_ interaction: UIDropInteraction, previewForDropping item: UIDragItem, withDefault defaultPreview: UITargetedDragPreview) -> UITargetedDragPreview? {
let image = getImageTest(from: defaultPreview.view.layer)
return defaultPreview
}
where image should be the desired preview image and getImageTest
is defined as a simple function to obtain an UIImage from the CALayer
content:
func getImageTest(from layer: CALayer) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(layer.frame.size, layer.isOpaque, UIScreen.main.scale)
guard let context = UIGraphicsGetCurrentContext() else {
UIGraphicsEndImageContext()
return nil
}
layer.render(in: context)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
Unfortunately image
is a solid black image with the right size but no content. Further analysis yields that indeed the defaultPreview.view.layer
CALayer
has no contents.
So, how can I obtain the preview image?
ios swift drag-and-drop ios11
add a comment |
When the user initiates a drag and drop operation, ios drag and drop functionality automatically assigns a preview image (unless there is specifically a UITargetedDragPreview
assigned) that is positioned under the current touch. Here is an example image:
I want to obtain this preview image shown besides the "+" symbol.
My attempt so far was to use the UIDropInteractionDelegate
method dropInteraction(_:previewForDropping:withDefault:)
:
func dropInteraction(_ interaction: UIDropInteraction, previewForDropping item: UIDragItem, withDefault defaultPreview: UITargetedDragPreview) -> UITargetedDragPreview? {
let image = getImageTest(from: defaultPreview.view.layer)
return defaultPreview
}
where image should be the desired preview image and getImageTest
is defined as a simple function to obtain an UIImage from the CALayer
content:
func getImageTest(from layer: CALayer) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(layer.frame.size, layer.isOpaque, UIScreen.main.scale)
guard let context = UIGraphicsGetCurrentContext() else {
UIGraphicsEndImageContext()
return nil
}
layer.render(in: context)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
Unfortunately image
is a solid black image with the right size but no content. Further analysis yields that indeed the defaultPreview.view.layer
CALayer
has no contents.
So, how can I obtain the preview image?
ios swift drag-and-drop ios11
When the user initiates a drag and drop operation, ios drag and drop functionality automatically assigns a preview image (unless there is specifically a UITargetedDragPreview
assigned) that is positioned under the current touch. Here is an example image:
I want to obtain this preview image shown besides the "+" symbol.
My attempt so far was to use the UIDropInteractionDelegate
method dropInteraction(_:previewForDropping:withDefault:)
:
func dropInteraction(_ interaction: UIDropInteraction, previewForDropping item: UIDragItem, withDefault defaultPreview: UITargetedDragPreview) -> UITargetedDragPreview? {
let image = getImageTest(from: defaultPreview.view.layer)
return defaultPreview
}
where image should be the desired preview image and getImageTest
is defined as a simple function to obtain an UIImage from the CALayer
content:
func getImageTest(from layer: CALayer) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(layer.frame.size, layer.isOpaque, UIScreen.main.scale)
guard let context = UIGraphicsGetCurrentContext() else {
UIGraphicsEndImageContext()
return nil
}
layer.render(in: context)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
Unfortunately image
is a solid black image with the right size but no content. Further analysis yields that indeed the defaultPreview.view.layer
CALayer
has no contents.
So, how can I obtain the preview image?
ios swift drag-and-drop ios11
ios swift drag-and-drop ios11
asked May 24 '18 at 20:02
WizardWizard
13718
13718
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f50517296%2fhow-to-obtain-default-preview-image-from-drag-and-drop-operation%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f50517296%2fhow-to-obtain-default-preview-image-from-drag-and-drop-operation%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown