编辑:正如sunshinejr在这里指出的,此问题已修复,将与下一个Xcode / Swift版本一起发布。
在使用Swift 4和Swift 5代码库将Xcode 10.1更新为Xcode 10.2之后,我已经看到很多奇怪的行为。
问题之一是在一个ViewController上不再调用ScrollView委托方法。简化的视图层次结构如下:
| ScrollView (ParentScrollView)
| -- Stack View
| ---- ScrollView (ChildScrollView)
| ---- ScrollView (ChildScrollView)
| ---- ScrollView (ChildScrollView)
Run Code Online (Sandbox Code Playgroud)
它充当具有多个页面的视图:ParentScrollView可以水平滚动,ChildScrollView垂直滚动。
ViewController是所有Scrollview(在Storyboard中设置)的委托,但是scrollViewDidEndDecelerating在滚动任何视图(ParentScrollView或ChildScrollView)时不会调用委托方法(如)。该基类的ViewController符合UIScrollViewDelegate。
我试过在代码中设置委托,除了不知道自己可能做错了什么。该转换未更改该类中的任何代码,但是在更新之前一切正常。在Swift 5发行说明中,我也通常找不到手势,委托或ScrollView的任何更改。
Swift 5编译器似乎是一个错误。此外,有时它确实起作用,有时却不起作用-所有这些都无需更改任何代码或项目设置。
为什么这不再起作用?有没有其他人经历过类似的行为?
我试图NSMutableParagraphStyle通过以下方式设置:
@IBOutlet weak var headline: UILabel! {
didSet {
let style = NSMutableParagraphStyle()
style.maximumLineHeight = 15
style.lineSpacing = 0
style.alignment = .center
let attributes: [NSAttributedStringKey : Any] = [NSAttributedStringKey.paragraphStyle : style,
NSAttributedStringKey.baselineOffset : 0]
let attributedString = NSMutableAttributedString(string: headline.text!, attributes: attributes)
headline.attributedText = attributedString
}
}
Run Code Online (Sandbox Code Playgroud)
...这不会改变 iOS 10.3.2和.3上文本外观的任何内容.它适用于iOS 9和iOS 11.
我添加了baselineOffset这似乎解决了一些用户(雷达)的问题 - 它对我的情况没有帮助.还有其他任何解决方法,或者所有10.3.x的用户现在都需要整天使用破损的布局吗?
编辑:@Larme我试过这个,这也不起作用:
let attributedString = NSMutableAttributedString(string: headline.text!, attributes: attributes)
attributedString.addAttribute(NSAttributedStringKey.backgroundColor, value: UIColor.blue, range: NSMakeRange(0, 3))
headline.attributedText …Run Code Online (Sandbox Code Playgroud)