小编shi*_*him的帖子

如何在两个自动布局约束之间切换?

我有两个UI布局约束,它们在设计上相互冲突.一次只能有一个活跃.

UIViewController's方法中updateConstraintsIfNeeded,我有以下代码在两个约束之间切换,具体取决于数据模型的状态.

override func updateConstraintsIfNeeded() {
    super.updateConstraintsIfNeeded()

    if question?.thumbURL != nil {
        showAttachmentConstraint.active = true
        hideAttachmentConstraint.active = false        
    } else {
        showAttachmentConstraint.active = false
        hideAttachmentConstraint.active = true
    }
}
Run Code Online (Sandbox Code Playgroud)

这项工作按计划进行,但我在调试输出中得到了这个熟悉的警告:

无法同时满足约束.可能至少下列列表中的一个约束是您不想要的约束....

显然,当语句showAttachmentConstraint.active = true执行时,它暂时与hideAttachmentConstraint当时仍处于活动状态的冲突相冲突.

是否可以将此切换操作原子化?我希望能有像beginUpdateendUpdateUITableView.

ios autolayout

8
推荐指数
1
解决办法
1266
查看次数

应用程序与Testflight中的iPhone 4s和5不兼容

我差不多完成了我的应用程序,现在我正在测试它.问题是我无法让它在iPhone 4s和iPhone 5上运行.部署目标设置为8.0,并且它在iPhone 4s模拟器上运行完美.当我的测试人员打开TestFlight时,他们可以看到这个兼容设备列表,而且设备早于iPhone 5s的人无法安装它.这是我的测试人员在TestFlight中看到的:

另一个奇怪的是它与iPad兼容,但我只在Xcode中将我的设备设置为iPhone.

我试过研究这个,但我只能找到与自动布局和尺寸调整问题相关的问题.我确保所有设备上的一切都应该很好看,我错过了什么?

iphone ios testflight

8
推荐指数
1
解决办法
4222
查看次数

使用Swift设置自定义表格视图页脚

我正在尝试将自定义页脚设置为我的表格视图.我在一个nib文件上创建了页脚并创建了一个受控制的页脚.

class LoginTableFooter: UITableViewHeaderFooterView
Run Code Online (Sandbox Code Playgroud)

viewDidLoad()我写这个代码

let footerNib = UINib(nibName: "LoginTableFooter", bundle: nil)
        tableView.register(footerNib, forHeaderFooterViewReuseIdentifier: "LoginTableFooter")
Run Code Online (Sandbox Code Playgroud)

然后我实施了 viewForFooterInSection

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let cell = self.tableView.dequeueReusableHeaderFooterView(withIdentifier: "LoginTableFooter")
    let header = cell as! LoginTableFooter

    return cell
}
Run Code Online (Sandbox Code Playgroud)

viewForFooterInSection从未被称为.我也试图实现,viewForHeaderInSection但它也没有被调用.你知道出了什么问题吗?我的表视图中只有一个部分; 是否可以/更好地直接设置页脚viewDidLoad

uitableview ios swift

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

XCode - 如何重置/“删除”从 Xcode 运行的 mac os 应用程序(类似于删除 ios 模拟器中的应用程序)?

使用 iOS 模拟器时,我只需删除该应用程序并重新运行该应用程序即可重新开始。对于 macOS 应用程序,这是如何完成的?我找不到它。“DerivedData”内有一个项目文件夹,但删除它也会扰乱整个项目,我必须重新获取所有依赖项和内容。

谢谢!

macos xcode

8
推荐指数
1
解决办法
1441
查看次数

此应用程序是使用 iOS SDK 构建的。所有提交到 App Store 的 iOS 应用程序必须使用 iOS 13 SDK 或更高版本构建

上传我的应用程序后收到一封来自 Apple 的新电子邮件(在今天之前没有收到此类电子邮件,至少最近没有):

我们发现您的应用程序“MyApp”1.2.3 (45) 最近交付的一个或多个问题。请更正以下问题,然后重新上传。

ITMS-90725:SDK 版本问题 - 此应用程序是使用 iOS SDK 构建的。提交到 App Store 的所有 iOS 应用程序都必须使用 iOS 13 SDK 或更高版本构建,包含在 Xcode 11 或更高版本中。此外,从 2021 年 4 月 26 日开始,提交到 App Store 的 iOS 应用程序必须使用 iOS 14 SDK 或更高版本构建,包含在 Xcode 12 或更高版本中。

这很奇怪,因为该消息实际上并未指明问题所在的 SDK 版本。我以为我们正在使用最新的。

在项目文件中,我们在“Base SDK”下没有特定的版本

Xcode 项目构建设置 Base SDK 截图

而且似乎没有任何明确的方法来指定 SDK 版本。如果我点击下拉菜单,我会看到:

Xcode 基础 SDK 下拉截图

如果我点击“其他”,我会看到:

Xcode base SDK 其他对话框截图

我检查了另一个最近创建的 Xcode 项目,它也没有在 Base SDK 中指定任何版本。

如何解决此 Apple SDK 版本问题?

macOS 11.2.3 和 Xcode 12.4

xcode base-sdk ios app-store-connect

8
推荐指数
1
解决办法
2192
查看次数

SPM 缓存在 github 操作上不起作用,有什么想法吗?

我正在尝试使用缓存操作在 GitHub Actions 上缓存 SPM 包,我遵循以下示例:

  - uses: actions/cache@v2
  with:
    path: Myproject.xcworkspace/xcshareddata/swiftpm/Package.resolved
    key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
    restore-keys: |
      ${{ runner.os }}-spm-
Run Code Online (Sandbox Code Playgroud)

我觉得当你使用 Xcode 添加 SPM 包时不可能使用缓存

有人成功地将缓存添加到您的项目中,甚至通过 Xcode 管理 SPM 吗?或者我的 .yml 文件可能有问题,但不幸的是我无法使其工作。

github swift swift-package-manager github-actions

8
推荐指数
1
解决办法
2786
查看次数

在iOS中限制UIScrollview的弹跳

我需要将弹跳限制在a中UIScrollView,使其像往常一样在底部弹跳,但不会超过顶部的X像素(底部无关紧要).

有没有办法限制弹跳大小?我认为也许代理中的一个方法,比如我们scrollViewWillScroll(而不是scrollViewDidScroll)允许我使用那些比top + X更远的滚动事件,但到目前为止我还找不到合适的滚动事件.

有线索吗?

uiscrollview bounce ios

7
推荐指数
1
解决办法
7493
查看次数

如果应用程序已终止,将调用performFetchWithCompletionHandler

很难找到明确的答案; 在Apple文档中找不到它,在搜索过去的问题后找不到肯定的是/否.

问题很简单 - 如果应用程序请求在N次之后执行后台提取,则用户终止应用程序.操作系统是否仍会将应用程序启动到后台以执行后台获取?

ios background-fetch

7
推荐指数
1
解决办法
2117
查看次数

等待主线程的 Xcode 异步单元测试

我正在尝试使用 Xcode 中的单元测试来测试一些异步代码,但是我遇到了一个阻塞的主线程。

问题是一些被测试的代码期望从 iOS 类 (AVFoundation) 接收回调。但是,似乎 AVFoundation 类只会在主线程上回调。

问题是,如果我正在进行异步单元测试,那么测试实际上会在主线程等待时阻塞它,因此永远无法发送回调。

我很确定这就是问题所在。有什么方法可以从另一个线程运行测试或者有一个XCTWaiter不阻塞主线程的方法吗?

编辑:在查看了一些文档之后,似乎最好的方法是在后台线程上运行整个测试用例。但是,在我当前的项目中,所有测试都是自动设置的。我想知道是否有人知道如何设置测试用例/手动运行。这样我就可以在另一个线程上运行它。

unit-testing ios xctest

7
推荐指数
2
解决办法
1811
查看次数

从主线程访问后,不得从后台线程对>布局引擎进行修改

我刚刚为iPhone和新的Xcode下载了iOS 13。我想测试iOS 13的应用程序,但是当我尝试运行应用程序时,几秒钟后会出现错误。错误:

由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“从主线程访问布局引擎后,不得从后台线程对其进行修改。” ***第一掷调用堆栈:(0x191ea9c30 0x191bc40c8 0x192395434 0x19218eb94 0x19218eaa8 0x19218e718 0x1963e6ea8 0x191bbfaf0 0x198984384 0x19634fe54 0x19898468c 0x198997bf4 0x1988dd3e4 0x1989083a0 0x198909388 0x191bbc3c0 0x191bb4dbc 0x191bb6de8 0x191bb6b30 0x191bbcc78)的libc ++ abi.dylib:与类型NSException的未捕获的异常终止

在iOS 12及更低版本中,一切似乎都可以正常运行,而我不会收到此错误。有人知道如何解决此错误以及该错误的含义吗?

下载编号:

func Download_ID() {
    let urlString = "https://www.instagram.com/\(self.username_String)/?__a=1"
    guard let url = URL(string: urlString) else { return }
    URLSession.shared.dataTask(with: url) { data, urlResponse, error in
        guard let data = data, error == nil, urlResponse != nil else {
            print(error)
            return
        }
        do
        {
            let decoder = JSONDecoder()
            let downloadedData_user = try …
Run Code Online (Sandbox Code Playgroud)

layout xcode ios swift

7
推荐指数
4
解决办法
3252
查看次数