是否有可能修改UIImage的renderingMode从故事板或XIB编辑器?
目标是应用于tintColor特定UIImageView对象.
从Xcode 7开始,我们有一个很好的用于UI测试的API.大多数情况下我对它很满意.唯一的问题与速度有关.
在一开始,普通的UI测试用例(大约15个动作)运行大约25秒.然后我完全嘲笑网络.现在需要20秒.考虑到时间只取决于动画和启动时间(1秒甚至更短),我想,必须有办法加快速度.
这是我如何将查询参数添加到基本URL:
let baseURL: URL = ...
let queryParams: [AnyHashable: Any] = ...
var components = URLComponents(url: baseURL, resolvingAgainstBaseURL: false)
components?.queryItems = queryParams.map { URLQueryItem(name: $0, value: "\($1)") }
let finalURL = components?.url
Run Code Online (Sandbox Code Playgroud)
当其中一个值包含+符号时,就会出现问题.由于某种原因,它没有编码到%2B最终的URL中,而是保留+.如果我自己编码并通过%2B,NSURL编码%并且'加'成为%252B.
问题是我怎么能%2B在实例中NSURL?
PS我知道,我甚至不会有这样的问题,如果我构建的查询字符串自己,然后只需一个结果传递给NSURL的构造init?(string:).
draw9patch似乎非常不方便.如果图像很大,则需要大约5分钟来绘制所有必需的纯黑线.很难相信来自Google的高度专业的开发人员已经创建了类似这个工具的东西.
还有更好的应用吗?或者我做错了什么?
在此代码中,当文本发生更改时,titleEditingChanged会调用(如预期的那样).但是当它执行该行时
investment?.title = sender.text!
Run Code Online (Sandbox Code Playgroud)
它调用didset{}的Investment.为什么?
class InvestmentCell: UITableViewCell {
var investment: Investment? {
didSet {
// setup UI elements from class properties
textField.text = investment?.title
valueField.text = investment?.value?.description
}
}
@IBAction func titleEditingChanged(sender: UITextField) {
investment?.title = sender.text!
}
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var valueField: UITextField!
}
Run Code Online (Sandbox Code Playgroud) 所以,我有一个UIStackView包含四(4)个UIView.如果我删除其中的一个(1)UIView,其他三个(3)将填充整个空间UIStackView.
我的问题:
如何在a上添加最大高度,UIView以便UIStackView即使分布均匀填充,它也不会填充整个空间?我读了一些关于添加约束的内容,但我无法使其工作.顺便说一下,我正在使用swift.
谢谢.
我的故事板是在Xcode 7中创建的.安装Xcode 8之后,所有这些都经常搞砸了.当我打开其中一个时,Xcode会要求我选择一个设备(这是一个不错的新功能).但是它从不调整视图的帧,所以我必须按"全视图:更新帧"无限次.甚至这并不能解决所有"错位"的观点.
谁知道如何解决这个问题?或者唯一的选择是祈祷Apple在某些时候修复它?
更新1
每次打开IB时都会发生这种情况,即使我之前已经修复了帧.
更新2
当我的同事在他的计算机上修复相同的故事板时,更改仍然存在.不知道是什么让我的Xcode如此特别.
有很多来源解释如何在Swift 2中制作它作为基础:
var value: Int = 0
let data: NSData = ...;
data.getBytes(&value, length: sizeof(Int))
Run Code Online (Sandbox Code Playgroud)
然后我更新了Swift 3的语法/命名:
var value: Int = 0
let data: NSData = ...;
data.copyBytes(to: &value, count: MemoryLayout<Int>.size)
Run Code Online (Sandbox Code Playgroud)
然而它不起作用.编译器不喜欢它的类型value,它应该是UInt8.但我想要Int.谁知道我怎么能做到这一点?
我正在用Swift编写一个XCTest单元测试。这个想法是在某种情况下不能调用回调。
所以我要做的是
func testThatCallbackIsNotFired() {
let expectation = expectationWithDescription("A callback is fired")
// configure an async operation
asyncOperation.run() { (_) -> () in
expectation.fulfill() // if this happens, the test must fail
}
waitForExpectationsWithTimeout(1) { (error: NSError?) -> Void in
// here I expect error to be not nil,
// which would signalize that expectation is not fulfilled,
// which is what I expect, because callback mustn't be called
XCTAssert(error != nil, "A callback mustn't be …Run Code Online (Sandbox Code Playgroud) 我有以下一段代码:
class C {
private enum E {
// ...
}
}
private extension C {
func f(e: E) { // error: Method must be declared private because its parameter uses a private type
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用错误方法private,编译器错误就会消失。我想知道这是 Swift 中的错误还是我没有得到什么?
有没有办法修复Swift for Objective-C中实现的方法的名称?
一个Swift方法
static func convert(foo: Foo) -> Bar
Run Code Online (Sandbox Code Playgroud)
在Objective-C成为
+ (Bar *)convertWithFoo:(Foo *)foo;
Run Code Online (Sandbox Code Playgroud)
而所需的名字是
+ (Bar *)convertFoo:(Foo *)foo; // without `With`
Run Code Online (Sandbox Code Playgroud)
从Objective-C到Swift我会使用CF_SWIFT_NAME()或NS_SWIFT_NAME()宏.
我有一个UITableView每个单元格的大小不同的地方(这取决于需要显示的内容量)。
结果(或者至少我认为是结果),当用户第一次开始滚动时,垂直滚动条最初很小。随着用户继续滚动,滚动条会增长,并在用户到达最后一个单元格时达到其正确长度。
有没有人对如何解决这个问题有任何想法(我使用的是 Swift 和 Xcode 7.1.1)?
ios ×8
swift ×8
objective-c ×2
swift3 ×2
xctest ×2
android ×1
autolayout ×1
constraints ×1
ios7 ×1
nine-patch ×1
nsurl ×1
scrollbar ×1
storyboard ×1
swift2 ×1
uistackview ×1
uitableview ×1
uitest ×1
unit-testing ×1
xcode ×1
xcode7 ×1
xcode8 ×1