小编Nik*_*sen的帖子

设置UIView大小以适合子视图


我有一个UIView包含两个UILabels,它们有动态高度.我想要UIView适应UILabels的大小+一些填充.现在我正在绘制标签,然后将UIView的宽度和高度限制设置为标签的组合大小.

现在我这样做:

func populateWithMessage(headline: String?, message: String) {
    // Sets text
    self.headerLabel.text = headline
    self.messageLabel.text = message

    self.headerLabel.sizeToFit()
    self.messageLabel.sizeToFit()

    self.layoutSubviews()

    // Finding the label with the greatest width
    var longestLabel: UILabel!
    if self.headerLabel.frame.width > self.messageLabel.frame.width {
       longestLabel = self.headerLabel
   } else {
       longestLabel = self.messageLabel
   }

   let combinedLabelHeight = self.headerLabel.frame.height + self.messageLabel.frame.height

   // Update the container view's constraints
   self.containerViewWidtConstraint.constant = longestLabel.frame.width + 10
   self.containerViewHeightConstraint.constant = combinedLabelHeight + 10

   self.updateConstraints()
}
Run Code Online (Sandbox Code Playgroud)

不幸的是它不起作用: - /

任何想法将不胜感激!

我正在使用Swift 2.3和Autolayout.

uiview uilabel ios autolayout swift

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

使用Swift取消自动续订订阅

我想创建一个按钮,用户可以取消自动续订订阅(或重定向到App Store).
如果没有用户必须首先完成整个购买过程,这是否可能?如果是的话,你会怎么做呢?
对此事的任何想法将不胜感激!!

renewal storekit in-app-purchase ios swift

12
推荐指数
2
解决办法
6627
查看次数

调用 -platform 时,DVTAssertions?(null) UDID 中的 deviceType 为 NULL

我正在 Flutter 中开发一个应用程序。我尝试构建该应用程序,但出现以下错误并且无法运行该应用程序。

xcodebuild[80270:554507]  DVTAssertions: Warning in
    /Library/Caches/com.apple.xbs/Sources/DVTiOSFrameworks/DVTiOSFrameworks...
    Details:  (null) deviceType from <UDID> was NULL when -platform called.
    Object:   <DTDKMobileDeviceToken: <TOKEN>>
    Method:   -platform
    Thread:   <NSThread: <TOKEN>>{number = 2, name = (null)}
    Please file a bug at https://feedbackassistant.apple.com with this warning message and any useful information you can provide.
Run Code Online (Sandbox Code Playgroud)

xcode ios flutter

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

在远程推送通知重定向到正确的ViewController

通过远程推送通知(使用Swift)打开时,我很难让我的iOS应用程序按预期运行.我想要的是,当通过点击推送通知打开应用程序时,它应该直接跳转到某个ViewController,但仍然维护导航堆栈.并且为了使其进一步复杂化,目标视图控制器依赖于推送消息.

示例:我的应用程序已关闭,我收到推送通知:"您收到了新消息".我单击通知,应用程序打开并显示新消息,而不是常规初始视图控制器.如果我的应用程序打开并且我收到推送通知,则没有任何反应.

push-notification ios swift

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

将JSON解析为有序字典

我试图解析其中包含这样的字典中的JSON:
{"key1" : "value1", "key2" : "value2", "key3" : "value3", ..., "key_n", "value_n"}
我想Dictionary在Swift中将这个JSON解析为,但是保持顺序非常重要。
我知道Swift没有任何有序字典类型,但是有什么办法可以克服这个问题?

请注意,我正在解析的JSON包含数百个键,之后没有可以排序(升序/降序)的值来重新创建订单。

任何想法将不胜感激!

json dictionary swift

5
推荐指数
0
解决办法
542
查看次数

在枚举类型上切换大小写

我有一个问题,我希望在枚举类型(SearchFilterOptionType)上做一个switch-case ,但由于某种原因,Swift/Xcode编译器无法识别该成员.
我有以下枚举:

enum SearchFilterOptionType {
    case Checkbox
    case Selection
    case Interval
    case Text
}
Run Code Online (Sandbox Code Playgroud)

我能够做到以下几点:

if dataElements[0].type == SearchFilterOptionType.Checkbox {
    return
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我想用switch-case复制相同的内容,我会得到错误:

"Enum case'Checkbox'不是'SearchFilterOptionType!'类型的成员."

switch dataElements[0].type {
    case SearchFilterOptionType.Checkbox:
        break

    default:
        break
}
Run Code Online (Sandbox Code Playgroud)

任何想法都表示赞赏!

添加:

var dataElements: Array<SearchFilterOption>
Run Code Online (Sandbox Code Playgroud)


struct SearchFilterOption {

    var title: String!
    var type: SearchFilterOptionType!

    init(title: String, type: SearchFilterOptionType) {
        self.title = title
        self.type = type
    }
}
Run Code Online (Sandbox Code Playgroud)

enums switch-statement ios swift

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