小编God*_*her的帖子

iOS 用一些字体切断 UILabel/UIButton

我的项目中有自定义字体。但是我检测到 XCode 附带的一些字体也有同样的问题。由于未知原因,如果我将重音设置为大写字母(这在西班牙很常见,例如Á lgreba),文本的顶部将被剪切。

在此处输入图片说明

对于其他字体更清晰,因为我什至看不到半重音。我可以用 UILabel 设置高度约束来做一个技巧,但是这个技巧不适用于 UIButton 或导航栏的标题。我也在 UILabel 中尝试调用 sizeToFiT 但没有成功。

ios swift

6
推荐指数
1
解决办法
2112
查看次数

访问来自不同目标的类,标记为"公共"

我创建了一个新目标,并添加了一个带有访问修饰符"Public"的类.但我看不到这堂课.

http://s23.postimg.org/ikqn0zlvu/Screen_Shot_2015_02_27_at_12_27_28.jpg

从文档中我读到"公共实体旨在用作API,并且可以由任何导入模块的文件访问,例如作为您的几个项目中使用的框架." 所以我的猜测是我不导入模块/目标?

https://developer.apple.com/swift/blog/?id=5 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html

xcode ios swift

5
推荐指数
1
解决办法
3084
查看次数

RxSwift:基于文本字段的启用/禁用按钮不为空

我必须使用RxSwift根据两个文本字段上的字符数启用一个按钮

@IBOutlet weak var userTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var buttonToEnableDisable: UIButton!

var enabledObservable = combineLatest(userTextField.rx_text, passwordTextField.rx_text) 
{ (user,password) in
   self.loginButton.enabled = a.characters.count > 0 && b.characters.count > 0
}
Run Code Online (Sandbox Code Playgroud)

最后我通过这样做来完成,但我不确定它是否是最好的方式:

    _ = combineLatest(emailTextField.rx_text, passwordTextField.rx_text) { (a: String, b:String) in
        self.loginButton.enabled = (a.characters.count > 0 && b.characters.count > 0)
    }.subscribeNext { (result) -> Void in
    }
Run Code Online (Sandbox Code Playgroud)

编辑最终版本:

    _ = combineLatest(emailTextField.rx_text, passwordTextField.rx_text) { (a: String, b:String) in
        return (a.characters.count > 0 && b.characters.count > 0)
        }.subscribeNext { …
Run Code Online (Sandbox Code Playgroud)

swift rx-swift

5
推荐指数
1
解决办法
8665
查看次数

带铸造外壳的开关

我想用一个开关来做到这一点:

 protocol TestProtocol {}

 class A: TestProtocol {}
 class B: TestProtocol {}

 var randomObject: TestProtocol

 if let classAObj = randomObject as? A {
 } else if let classBObj = randomObject as? B {}
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

switch randomObject {
    case let classAObj = randomObject as? A:
         ...
    case let classBObj = randomObject as? B:
         ....
     default:
         fatalError("not implemented")
}
Run Code Online (Sandbox Code Playgroud)

ios swift

5
推荐指数
1
解决办法
1201
查看次数

解决 Swift 中的循环依赖

假设我有两个互相需要的课程。

class LoginInteractor {

     let userInteractor: UserInteractor

     init(userInteractor: UserInteractor) {
        self.userInteractor = userInteractor
     }

}

class  UserInteractor {
    let loginInteractor: LoginInteractor

    init(loginInteractor: LoginInteractor) {
        self.loginInteractor = loginInteractor
     }
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试这个( let loginInteractor = LoginInteractor() )我会得到循环依赖。我该如何解决这个问题?

swift

5
推荐指数
1
解决办法
2万
查看次数

水平堆栈视图标签以固定高度元素增长

我有一个带有UIImageView (1:1 Aspect Rati, Height 32) 和label的水平堆栈视图。由于它有一个高度,stackView 会在右边切断我的标签,不让我有不止一行。

在此处输入图片说明

我希望 Horizo​​ntal StackView 的高度增长,因为标签需要显示自己的文本或使用 UIImageView 高度(如果它更大)。

在此处输入图片说明

ios swift uistackview

5
推荐指数
2
解决办法
4890
查看次数

修改覆盖属性willSet get/set的值

我有一个自定义UILabel,我覆盖它的文本属性.我需要修改此属性的值,如果upperCase = true问题是我正在递归调用setter.

@IBDesignable class CustomLabel: UILabel {
@IBInspectable var upperCase: Bool = false
override var text: String? {
    willSet {
        if upperCase == true {
            text = newValue?.uppercaseString  
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

var aux: String?
override var text: String? {
    get { return aux }
    set {  aux = newValue }
}
Run Code Online (Sandbox Code Playgroud)

但文本标签未设置.有什么建议吗?

ios swift

4
推荐指数
1
解决办法
1797
查看次数

此解码器只会解码采用 NSSecureCoding 的类

从 AppDelegate 我称之为:

-(void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply{

    [SavedSearchesHack getAllMatches:^(MatchCollection * _Nonnull matchCollection) {
        reply(@{@"response" : matchCollection});
    }];
}
Run Code Online (Sandbox Code Playgroud)

然后我在调用回复时收到此错误:

*** 由于未捕获的异常“NSInvalidUnarchiveOperationException”而终止应用程序,原因:“此解码器将仅解码采用 NSSecureCoding 的类。'Test.MatchCollection' 类不采用它。

    public class func openParentApplication(userInfo: [NSObject : AnyObject], 
    reply: (([NSObject : AnyObject], NSError?) -> Void)?) -> Bool
Run Code Online (Sandbox Code Playgroud)

只要我简单地返回像“test”这样的对象而不是 MatchCollection,我就不会出错。

objective-c ios apple-watch watchkit watchos

4
推荐指数
1
解决办法
3502
查看次数

从主bundle获取本地化字符串

如何从主Bundle进入UITest目标本地化?

func localizedText(_ key: String) -> String {
    return Bundle.main.localizedString(forKey: key, value: nil, table: nil)
}
Run Code Online (Sandbox Code Playgroud)

我尝试访问Bundle.main但没有本地化字符串.而且似乎我无法导入应用程序的主要目标来做Bundle(for:ClassName.self).localized ...

任何提示?

ios swift xcode-ui-testing

3
推荐指数
1
解决办法
1016
查看次数

将rx.value添加到我的CustomView

假设我有一个带有值的CustomView.我想使用rx.value(Observable)将该值公开给世界,而不是必须通过值(Int)访问它.

final class CustomView: UIView {
   var value: Int = 0
   ...
}
Run Code Online (Sandbox Code Playgroud)

我从UIStepper + Rx复制了这个:

extension Reactive where Base: CustomView {

    var value: ControlProperty<Int> {
        return base.rx.controlProperty(editingEvents: [.allEditingEvents, .valueChanged],
            getter: { customView in
                customView.currentValue
        }, setter: { customView, value in
            customView.currentValue = value
        }
        )
    }

}

final class CustomView: UIControl {

    fileprivate var currentValue = 1 {
        didSet {
            checkButtonState()
            valueLabel.text = currentValue.description
        }
    }

   // inside i set currentValue = 3
}
Run Code Online (Sandbox Code Playgroud)

但customView.rx.value不会发出任何值

ios swift rx-swift rx-cocoa

3
推荐指数
1
解决办法
1189
查看次数