【问题标题】:How to convert the following Objective-C code into swift [closed]如何将以下 Objective-C 代码转换为 swift [关闭]
【发布时间】:2016-02-29 00:05:43
【问题描述】:

我不知道如何将以下 Objective-C 代码转换为 Swift。我该怎么办?

-(void)layoutSubviews{

    for (UIView *view in self.subviews) {

        NSString *viewClass = NSStringFromClass([view class]);
        if (![viewClass isEqualToString:@"UITabBarButton"]) continue;

        CGFloat buttonX = buttonIndex * buttonW;
        if (buttonIndex >= 2) {
            buttonX += buttonW;
        }

        view.frame = CGRectMake(buttonX, buttonY, buttonW, buttonH);
        buttonIndex ++;
    }
}

【问题讨论】:

标签: ios objective-c swift


【解决方案1】:
for view in self.subviews {
  guard view is UITabBarButton else {
    continue
  }

  var buttonX = buttonIndex * buttonW
  if buttonIndex >= 2 {
    buttonX += buttonW
  }
  view.frame = CGRect(x: buttonX, y: buttonY, width: buttonW, height: buttonH)
  buttonIndex += 1
}

【讨论】:

  • UITabBarButton 是一个私有类,因此如果您想要应用商店批准,则不能直接引用它。这就是问题中的代码使用字符串比较进行检查的原因。
  • 好点我只是在语法上转换代码我没有在 xcode 中检查它
  • 你能告诉我我该怎么做吗?
  • 通常如果一个类是私有的(正如 rob 指出的那样),它是有充分理由的,不应该被访问。看来您只是想填充标签栏?如果是这样,您应该在初始化期间依靠 uitabbar 的 api 为您执行此操作 - 通常我只是通过情节提要这样做,但在早上我会发布一个编程解决方案 - 如果这是您想要实现的目标,那就是
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多