小编Kev*_*ers的帖子

自动布局:无法获取UICollectionViewCell子视图的帧大小

我有一个自定义的UICollectionViewCell子类(MyCell),它的界面是使用自动布局在Interface Builder中设置的.单元格具有图像视图和标签.

现在,当我配置单元格时,我需要知道图像视图的宽度和高度.听起来很简单,但看起来这是不可能的.

在我的视图控制器中:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
    cell.itemNumber = indexPath.item;
    return cell;
}
Run Code Online (Sandbox Code Playgroud)

在我的单元子类中,我使用我的属性的setter来自定义单元格:

- (void)setItemNumber:(NSInteger)itemNumber {
    _itemNumber = itemNumber;
    self.label.text = [NSString stringWithFormat:@"%i", self.itemNumber];

    // In my actual project I need to know the image view's width and hight to request an image
    // of the right size from a server. Sadly, the frame is always {{0, 0}, {0, 0}}
    // (same for the bounds)
    NSLog(@"%@", NSStringFromCGRect(self.myImageView.frame)); …
Run Code Online (Sandbox Code Playgroud)

ios autolayout uicollectionviewcell

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

Javascript中的负面lookbehind正则表达式

我希望匹配以@开头的所有字符串,除非它们在@前面还有其他字符.简单的例子:在@one @two and bla@three我想匹配@one@two,但不会 @three.这是为了突出聊天室中的用户名.

这些字符串可以在句子中的任何位置(在开头或中间).

我实际上认为(?![a-zA-Z])@[a-zA-Z]+应该工作,但它仍然匹配@three.

javascript regex

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

嵌套ng-repeat的DOM娱乐性能问题

我正在使用AngularJS渲染日历用户界面,而且在翻阅几周时我遇到了一些相当大的性能问题.让我解释.

用户界面看起来像这样:

日历ui的截图

我遍历所有人,然后为我循环的每个人,然后为那天的那个用户渲染日历对象.像这样(简化):

<div ng-repeat="user in ::ctrl.users track by user.id" class="row">
    <div ng-repeat="day in ctrl.days" class="cell">
        <div ng-repeat="item in ctrl.items[user.id][day] track by item.id">
            <div class="item">
Run Code Online (Sandbox Code Playgroud)

这个页面上没有疯狂的观察者数量(大约500个),几乎所有东西都是绑定一次.

问题是当用户单击上一个/下一个按钮以加载上一周或下周时.这将ctrl.days使用新的日期更改数组,并加载所有正确的项目.这样做会很好,直到你有大量的人和日历项目.然后所有DOM元素的破坏和重新创建都非常缓慢.

我遇到了sly-repeat指令,它用于缓存和重用DOM元素,但由于我的外部ng-repeat更改(ctrl.days),内部ng-repeat(带项目)也被重新创建.所以它并没有真正起作用.

我怎么解决这个问题?现在,使用大型数据集浏览数周需要大约2秒钟,这当然是不可接受的.通过一小组用户和日历项目,一切都非常活泼.

performance dom angularjs angularjs-ng-repeat

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

使用nonnull时没有警告?

使用这样的代码:

- (nonnull NSString *)testing {
    return nil;
}
Run Code Online (Sandbox Code Playgroud)

我不应该收到编译器警告吗?我没有得到任何警告,这似乎使整个可空性的东西看起来毫无用处?

nullable objective-c non-nullable

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

SwiftUI 中自定义 UIViewRepresentable UITextView 的框架高度问题

我正在通过 UIViewRepresentable 为 SwiftUI 构建自定义 UITextView。它旨在显示NSAttributedString和处理链接按下。一切正常,但是当我在NavigationView带有内联标题的 a 中显示此视图时,框架高度完全混乱。

import SwiftUI

struct AttributedText: UIViewRepresentable {
  class Coordinator: NSObject, UITextViewDelegate {
    var parent: AttributedText

    init(_ view: AttributedText) {
      parent = view
    }

    func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
      parent.linkPressed(URL)
      return false
    }
  }

  let content: NSAttributedString
  @Binding var height: CGFloat
  var linkPressed: (URL) -> Void

  public func makeUIView(context: Context) -> UITextView {
    let textView = UITextView()
    textView.backgroundColor = .clear …
Run Code Online (Sandbox Code Playgroud)

ios swiftui

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

在全局 CSS 文件中使用本地资源?

如果我有一个定义了一些基本颜色和字体等的全局 CSS 文件,并将其包含在我的顶级布局文件中import "$lib/assets/app.css",那么我如何从该 css 文件中引用本地字体和图像,它们也是在文件夹中/lib/assets?目前看来我必须将这些文件放入/static,但这会在创建构建时产生警告,更重要的是,它们在浏览器中仅缓存 4 小时。

举个例子,我的$lib/assets/app.css文件中有这样的内容:

@font-face {
  font-family: "Custom";
  src: url("/fonts/Bitter-Regular.ttf");
  font-display: swap;
}
Run Code Online (Sandbox Code Playgroud)

当该字体放置在/static文件夹中时效果很好,但我宁愿将其放置在文件夹中$lib/assets,因为这可能意味着它成为不可变构建的一部分并且缓存的时间更长。

sveltekit

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

Svelte 组件的类型是什么?

当你看这段代码时:

<script lang="ts">
  import RedThing from "./RedThing.svelte";
  import GreenThing from "./GreenThing.svelte";

  const things: Record<string, typeof RedThing> = {
    red: RedThing,
    green: GreenThing,
  };
</script>
Run Code Online (Sandbox Code Playgroud)

然后一切正常并且是强类型的。typeof RedThing但在我看来,用类似的东西替换会更有意义吗SvelteComponent?但这会导致 TS 错误:Type 'typeof RedThing__SvelteComponent_' is missing the following properties from type 'SvelteComponentDev': $set, $on, $destroy, $$prop_def, and 5 more.

那么 Svelte 组件的“通用”类型是什么?

或者在查看 时<svelte:component this={expression}/>,接受什么类型this

typescript svelte svelte-component

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

FireStore:查询 Firebase Auth 表?

我正在使用 Firestore 构建一个应用程序,其中一群人需要能够访问一个对象,我按照https://firebase.google.com/docs/firestore/solutions/role-based-access上的指南进行操作。所以,我的对象看起来有点像这样:

{
  title: "A Great Story",
  content: "Once upon a time ...",
  members: {
    alice: "host",
    bob: "player",
    david: "player",
    jane: "player"
  }
}
Run Code Online (Sandbox Code Playgroud)

这些键members只是用户 UID,所以实际上它们当然看起来不太好:)

现在,这一切都工作正常,我可以查询当前登录用户所属的对象,所有规则都有效。但是,现在我想在我的应用程序中显示成员列表。如何在 Firebase Auth 系统中查询我的会员地图中的用户?

如果这是不可能的,那么解决这个问题的“正常”方法是什么?文档本身中有用户信息(姓名、电子邮件、个人资料图片)的副本吗?但是,如何处理用户更改自己的信息呢?那么该文档有陈旧的旧数据..

我来自传统的关系数据库世界,这是我使用 NoSQL 数据库/Firestore 的第一步,因此我不太清楚如何最好地构建我的用户数据并使其保持最新。

firebase google-cloud-platform google-cloud-firestore

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

Swift Combine:将发布者转变为只读 CurrentValueSubject

有时我的视图模型使用@Published属性或 a PassthroughSubject,但我不希望它对外界可写。很简单,将其变成公共的AnyPublisher并将可写的保持为私有,如下所示:

class ViewModel {
  @Published private var _models = ["hello", "world"]

  var models: AnyPublisher<[String], Never> {
    return $_models.eraseToAnyPublisher()
  }
}

let viewModel = ViewModel()
viewModel.models.sink { print($0) }
Run Code Online (Sandbox Code Playgroud)

但是,如果您也希望能够“按需”读取该值怎么办?例如对于这种情况:

extension ViewController: UICollectionViewDelegate {
  func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    print(viewModel.models[indexPath.row])
  }
}

Run Code Online (Sandbox Code Playgroud)

显然,上面的代码是行不通的。

我考虑过使用 a CurrentValueSubject,但它的值也是可写的,而且无论如何我都很难将 Publisher 变成 CurrentValueSubject 。

我当前的解决方案是在视图模型上添加类似的内容:

class ViewModel {
  @Published private var _models = ["hello", "world"]
  @Published var selectedIndex: Int?

  var models: AnyPublisher<[String], Never> { …
Run Code Online (Sandbox Code Playgroud)

swift combine

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

Python正则表达式:搜索和替换怪异

我真的可以使用Python正则表达式问题的一些帮助.你期待结果

import re
re.sub("s (.*?) s", "no", "this is a string") 
Run Code Online (Sandbox Code Playgroud)

是"这不是字符串",对吧?但实际上它是"瘦身".子函数使用整个模式作为要替换的组,而不仅仅是我想要替换的组.

所有re.sub示例都涉及简单的单词替换,但如果您想根据字符串的其余部分更改某些内容,该怎么办?就像我的例子一样......

任何帮助将不胜感激.

编辑:

在我的情况下,后视和前瞻技巧不起作用,因为那些需要固定宽度.这是我的实际表达:

re.sub(r"<a.*?href=['\"]((?!http).*?)['\"].*?>", 'test', string)
Run Code Online (Sandbox Code Playgroud)

我想用它来查找字符串中不以http开头的所有链接,所以我可以在这些链接前面添加一个前缀(使它们绝对而不是相对).

python regex replace

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