我正在尝试创建一个使用UIContainerViews来托管UIViewControllers的动态View流.需要以编程方式将UIContainerViews(或UIViewControllers)添加到UIView以允许多个并排.
我一直在环顾四周,但找不到任何可以用来创建我的UIContainerView的构造函数.
有没有一种简单的方法可以做到这一点,还是反对创建可重用视图的正常准则?
总而言之,我想实现这样的目标:
var containerView = UIContainerView()
containerView.add(myViewController)
Run Code Online (Sandbox Code Playgroud) 我正在将Swift数据结构实现到Objective-C中,并且我很难"返回"2个值.
我的swift实现最初使用了一个元组来返回resultData和一个错误:
func getData(email: String) -> (SomeResultdata?, NSError?)
Run Code Online (Sandbox Code Playgroud)
但由于元组不是Objective-C中的一个特性,因此该函数不会暴露给Objective-C.我现在已经实现了一个专门用于返回SomeResultData的方法,但是也为传递的指针引用分配了一个NSError.见下文:
@objc func getData(email: String, var withError err: UnsafeMutablePointer<NSError?>) -> SomeResultdata? {
let (credentials, error) = self.getData(email)
// This self.getData(email) is the Swift implementation (returns tuple)
err = &error
return credentials
}
Run Code Online (Sandbox Code Playgroud)
我得到的两个错误是
方法不能标记为@objc,因为参数2的类型不能在Objective-C中表示
和
无法将表达式的类型'()'转换为'inout $ T2'
我正在尝试使用 iOS13 引入的新的组合布局 API,它们非常棒 - 但我有一个特别的问题,关于它的官方文档很少。
我正在寻找NSCollectionLayoutVisibleItem使用visibleItemsInvalidationHandler. 到目前为止,我已经尝试了两种不同的方法:
UIView属性动画layoutSection.visibleItemsInvalidationHandler = { (visibleItems, offset, env) in
let normalizedOffsetX = offset.x + centeredPadding
let centerPoint = CGPoint(x: normalizedOffsetX + collectionView.bounds.width / 2, y: 20)
visibleItems.forEach({ item in
UIView.animate(withDuration: 0.3) {
item.transform = item.frame.contains(centerPoint) ? .identity : CGAffineTransform(scaleX: 0.9, y: 0.9)
}
})
}
Run Code Online (Sandbox Code Playgroud)
CATransaction动画师layoutSection.visibleItemsInvalidationHandler = { (visibleItems, offset, env) in
let normalizedOffsetX = offset.x + centeredPadding
let centerPoint = CGPoint(x: normalizedOffsetX + …Run Code Online (Sandbox Code Playgroud)