我刚刚将项目迁移到swift 3并因为一个问题看到了很多崩溃:
终止应用程序由于未捕获的异常"NSInvalidArgumentException",原因是:" - [_ SwiftValue的pointsize]:无法识别的选择发送到实例
出现这种错误的原因是:
[NSAttributedString(NSExtendedStringDrawing) boundingRectWithSize:options:context:]
Run Code Online (Sandbox Code Playgroud)
我注意到的是,如果我将String转换为NSString并调用boundingRectWithSize它,它将抛出该错误.它似乎也发生在许多其他部分,例如,如果我在故事板中发送了一个视图控制器标题,它会抛出相同的错误.
谁有同样的问题?
重现问题:
在Xcode 8中创建一个新的Swift 3项目,并在viewDidLoad中添加以下行:
let attributes: [String: AnyObject?] = [
NSFontAttributeName: UIFont.systemFont(ofSize: 14)
]
let boundingRect = ("hello" as NSString).boundingRect(with: CGSize(width: 100, height: 100), options: .usesLineFragmentOrigin, attributes: attributes, context: nil)
Run Code Online (Sandbox Code Playgroud)
但正如我所说,它在许多其他地方崩溃,因为UIKit似乎在很多部分内部使用这种方法
我正在使用UICollectionViewCell的自动布局.因此,我们的想法是允许CollectionViewCell根据布局确定它的大小.所有约束都设置正确,但问题是我无法计算数据源方法的大小
collectionView:layout:sizeForItemAtIndexPath:
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想计算Cell的高度,执行以下操作:
static MyCell *myCell = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
myCell = [[MyCell alloc] initWithFrame:CGRectZero];
});
cell.model = model;
[cell updateConstraints];
[cell layoutSubviews];
return cell.frame.size;
Run Code Online (Sandbox Code Playgroud)
但它不会强制更新约束,因此单元格的框架为零.你能建议我如何根据它的约束来计算细胞的大小?
谢谢
autolayout uicollectionview nslayoutconstraint uicollectionviewcell
我必须在位于 NAT 后面(在不同网络中)的两个对等点之间在 iOS (Objective-C) 中实现套接字通信。是否有任何技术可以让我实现这一目标?基本上,我正在寻找一些 STUN、TURN 实现,它可以让我找出外部 IP/端口地址。
提前致谢,列昂尼德
ios ×2
autolayout ×1
nat ×1
nsstring ×1
objective-c ×1
sockets ×1
string ×1
stun ×1
swift ×1
uifont ×1