我正在我的应用程序中实现拖放。
将应用拖放(主要是拖放)的主屏幕之一位于UITextView.
我UITextView使用以下代码为此添加了一个放置交互:
let dropInteraction = UIDropInteraction(delegate: self)
inputTextView.addInteraction(dropInteraction)
Run Code Online (Sandbox Code Playgroud)
通过这样做,我现在接受其中的下降。
为了只接受图像和文本作为 drop,我实现了以下委托方法:
func dropInteraction(_ interaction: UIDropInteraction, canHandle session: UIDropSession) -> Bool {
return session.hasItemsConforming(toTypeIdentifiers: [kUTTypeImage as String, kUTTypeText as String]) && session.items.count == 1
}
Run Code Online (Sandbox Code Playgroud)
根据需要,我还实现了以下必需的委托方法来返回一个UIDropProposal:
func dropInteraction(_ interaction: UIDropInteraction, sessionDidUpdate session: UIDropSession) -> UIDropProposal {
let dropProposal: UIDropProposal = UIDropProposal(operation: .copy)
dropProposal.isPrecise = true
return dropProposal
}
Run Code Online (Sandbox Code Playgroud)
然后在 performDrop 委托方法中,我处理丢弃的内容并将其附加到 UITextView
func dropInteraction(_ interaction: UIDropInteraction, performDrop session: UIDropSession) {
// Access the dropped …Run Code Online (Sandbox Code Playgroud) 我有一个CustomPresentationController用自定义动画进出的动画;
这个特定的控制器被呈现,在屏幕尺寸的 50% 处更少,当我呈现它时,我添加了一个阴影灰色视图,presentingViewController所以它增加了一些深度。
presentedViewController如果我点击我调用默认方法的cancel按钮,我只能关闭。NavBardismiss(:)
我想要完成的是检测 外面的水龙头presentedViewController,也许在灰色区域内,这样我就可以解除presentedViewController,就像解除 ,ActionSheet但我没能做到。让我解释一下我到目前为止所做的尝试。
我试图UITapGestureRecognizer在阴影灰色视图中添加一个,但由于我展示了一个不同的控制器,应用引擎可能认为由于阴影视图不在顶层视图中,它可能无法访问,因此它“阻塞”识别器 - 每当我点击它时,手势手柄都不会触发。
我现在正在实施另外一个向下滑动以关闭,我可以很容易地做到这一点,但我真的希望tap-outside功能也能工作。
关于如何解决这个问题的任何提示?
应用程序图像如下:
当拉到刷新时,我发现了这个奇怪的应用程序崩溃.
我的代码如下:
var posts: [Posts] = []
override func viewDidLoad() {
super.viewDidLoad()
// refreshControl -> pull to refresh handler
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self,
action: #selector(Main_TVC.getData),
for: UIControlEvents.valueChanged)
self.refreshControl = refreshControl
getData()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell",
for: indexPath) as! PostsTableViewCell
cell.titleLabel.text = …Run Code Online (Sandbox Code Playgroud) 我有一个 UICollectionViewController 有一堆单元格,每个单元格都有屏幕大小。
如果我以纵向或横向方式启动应用程序,一切都会按预期进行。
问题是当我更改屏幕方向时,我称collectionViewLayout.invalidateLayout()单元格大小保持不变,而不调整它们的大小。
我不知道为什么会这样。
这是一些代码:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
print("size for item")
return CGSize(width: view.frame.width, height: view.frame.height)
}
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animate(alongsideTransition: { (_) in
self.collectionViewLayout.invalidateLayout() // layout update
}, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
在第一次加载时,我从大小集获取打印,但在更改方向后,它不会调用它,因此当我更改方向时,单元格大小不适合屏幕,因为它适合启动。
任何想法可能导致这种情况或我在这里做错了什么?
谢谢
编辑
不知何故,我试图在willTransition函数中插入一个打印语句,但我注意到它不会在屏幕旋转时触发。我认为问题出在那里而不是invaldateLayout()因为它从不触发。
如何不自动调用此覆盖功能?
我正在使用 CloudKit 并且正在检查是否已经创建了特定区域。
对于这个例子,假设一个区域没有设置,所以 CloudKit 检索我一个CKError.
这CKError有一个名为partialErrorsByItemIDwhich 类型的属性[AnyHashable : Error]?
这是代码:
fileprivate func checkIfZonesWereCreated() {
let privateDB = CKContainer.default().privateCloudDatabase
let op = CKFetchRecordZonesOperation(recordZoneIDs: [zoneID1, zoneID2])
op.fetchRecordZonesCompletionBlock = { (dict, err) in
if let err = err as? CKError, let _err = err.partialErrorsByItemID {
print(_err)
/* prints
[AnyHashable(<CKRecordZoneID: 0x60800003cba0; ownerName=__defaultOwner__, zoneName=TestZone>): <CKError 0x60400005a760: "Zone Not Found" (26/2036); server message = "Zone 'TestZone' does not exist"; uuid = ...-2DF4E13F81E2; container ID = "iCloud.com.someContainer">]
*/
// …Run Code Online (Sandbox Code Playgroud) 尝试提供时,我的应用崩溃了UIAlertController。
我有一个UIViewController模态呈现的,然后在该呈现的视图控制器上,当点击某个按钮时,我想呈现一个actionSheet警报。
执行此操作时,应用程序崩溃了,我无法弄清楚原因。
这是代码:
let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
alertController.addAction(UIAlertAction(title: "Image from Camera", style: .default, handler: { (_) in
let cameraController = CameraController()
self.present(cameraController, animated: true, completion: nil)
}))
alertController.addAction(UIAlertAction(title: "Image from Library", style: .default, handler: {(_) in
let imagePickerController = UIImagePickerController()
imagePickerController.delegate = self
imagePickerController.allowsEditing = true
self.present(imagePickerController, animated: true, completion: nil)
}))
alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
alertController.view.tintColor = UIColor.rgb(red: 46, green: 94, blue: 120)
self.present(alertController, animated: …Run Code Online (Sandbox Code Playgroud) 我试图在Python中减去字母,但我不能以正确的方式做到这一点.
我知道如何得到ord这封信.
喜欢:
a = "a"
x = ord(a) # -> this will give me 97.
Run Code Online (Sandbox Code Playgroud)
当我尝试从该字母中减去值时,得到的结果与我想要的完全不同.
如果我减去1从b我得到的97(代表a),但现在我想减去14从b,我想达到a,然后回去z,继续减法.
a = 97
b = 98
...
z = 122
Run Code Online (Sandbox Code Playgroud)
我想继续循环使用小写字母,它位于97和之间122.
例如,如果我减去14从b,我得到的84,但我想这样做,我想获得的方式n.
b - 14 = a - 13 = z - 12 (...) and so on.
Run Code Online (Sandbox Code Playgroud)
我希望你能理解我的意思.
;)
有人能帮我一下吗 ?
此致,伊万.
我已经阅读了这里的示例,但我无法按照我想要的方式进行操作,不知何故,我的渐变示例卡在屏幕中间,无法按预期工作。
我有一个UICollectionView用垂直滚动填充整个屏幕的。
我希望顶部和底部UICollectionView为黑色,中间为透明(因为我使用的是黑色 blackgroundColor)。
我尝试应用渐变,但不知何故我无法实现我想要的。
这是我的代码:
let gradient = CAGradientLayer()
gradient.frame = view.bounds
gradient.colors = [UIColor.black.cgColor, UIColor.clear.cgColor, UIColor.black.cgColor]
gradient.startPoint = CGPoint(x: 1, y: 0)
gradient.endPoint = CGPoint(x: 1, y: 1)
view.layer.mask = gradient
Run Code Online (Sandbox Code Playgroud)
上面的代码将渐变放置在屏幕中间,但相反。如果淡入全黑,则屏幕顶部和底部以及中间部分是透明的。
我正在尝试创建这样的东西:
感谢您的帮助
我有一个WKWebView我想禁用缩放.为此,我实现了UIScrollViewDelegate viewForZooming(_:)委托功能,其中我return nil如下:
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return nil
}
Run Code Online (Sandbox Code Playgroud)
不知何故,WKWebView当我捏时仍然缩放,我不想要这种效果.
我已设置WKWebView isMultipleTouchEnabled为false但仍然不会禁用缩放.
唯一一个禁用缩放的设置是isUserInteractionEnabled,false但有了这个我无法与内部的链接进行交互,WKWebView这不是理想的事情.
这就是我声明我的对象以及它是如何设置的方式
private lazy var webView: WKWebView = {
// script to fit the content with the screen
var scriptContent = "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"
let wkuscript = WKUserScript(source: scriptContent, injectionTime: WKUserScriptInjectionTime.atDocumentEnd, forMainFrameOnly: true)
let wkucontroller = WKUserContentController()
wkucontroller.addUserScript(wkuscript)
let wkwebconfig …Run Code Online (Sandbox Code Playgroud) 我的应用程序从后端加载图像并将它们显示在 UITableViewCell 中,其中包含一个 UIImageView 来显示它以及一些标签和按钮。
我已使用“重置为建议的约束”选项将建议的约束添加到 UITableViewCell。
这是检索数据后的一些代码:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = PostTableViewCell()
if (self.posts.count == 0) { return cell }
let post = posts[indexPath.row]
// Instancia o reuse identifier
if post["post_image"] != nil {
cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.PostWithImage, for: indexPath) as! PostTableViewCell
} else {
cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.PostWithoutImage, for: indexPath) as! PostTableViewCell
}
return cell
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
var …Run Code Online (Sandbox Code Playgroud) ios ×9
swift ×6
swift3 ×3
calayer ×1
ckerror ×1
cloudkit ×1
ios11 ×1
python ×1
subtraction ×1
tableview ×1
uiimage ×1
uiimageview ×1
uitableview ×1
uitextview ×1
wkwebview ×1