小编ars*_*ius的帖子

SwiftUI - 获取孩子的大小?

有没有办法在 SwiftUI 中获取子视图的大小?

我基本上希望做 UIKit 相当于:

self.child.frame.origin.x -= self.child.intrinsicContentSize.width/2.0
Run Code Online (Sandbox Code Playgroud)

我认为 GeometryReader 不会工作,因为它返回父级中的可用大小。

[编辑] 我发现可以使用.alignmentGuide(_, computeValue:)虽然这绝对是一个黑客来获取和保存尺寸。

LessonSliderText(text: self.textForProgress(self.progress), color: self.completedColor)
    .alignmentGuide(HorizontalAlignment.leading) { (dimensions) -> Length in
        self.textSize = CGSize(width: dimensions.width, height: dimensions.height)
        return 0
    }
    .offset(x: self.width*self.currentPercentage - self.textSize.width / 2.0)
    .offset(y: -self.textSize.height/2.0)
    .animation(nil)
    .opacity(self.isDragging ? 1.0 : 0.0)
    .animation(.basic())
Run Code Online (Sandbox Code Playgroud)

我想要完成的事情

swiftui

17
推荐指数
2
解决办法
8806
查看次数

使用 SwiftUI GeometryReader 而不影响外框?

是否可以以GeometryReader不只是填充父视图的方式使用?

作为一个具体的例子,我想使用.padding(.bottom, geometry.safeAreaInsets.bottom > 0 ? 0 : 12.0). 这将使用安全区域作为 iPhone X 上的边距和旧设备上的自定义边距。

没有GeometryReader我的视图占用适合其实际垂直大小的空间。 对于阅读器,视图占据屏幕的 1/2。

    VStack {
      Spacer()
      GeometryReader { proxy in // Lays out nicely without this...
        HStack {
          Text("Wrong")
          Spacer()
        }.border(Color.gray, width: 1)
      }

Run Code Online (Sandbox Code Playgroud)

布局不正确所需布局

swiftui

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

UITableViewCellAccessoryCheckmark涵盖iOS 7上的单元格分隔符

在iOS 7上使用此代码会导致分隔符视图被覆盖或缩短:

cell.accessoryType = UITableViewCellAccessoryCheckmark;
Run Code Online (Sandbox Code Playgroud)

如何修复分隔符视图?

我正在使用原型单元格,但我不是它们的子类.

在此输入图像描述

[编辑]

以下是cellForRowAtIndexPath的相关代码:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath];

if (indexPath.section == kDefaultViewSection){
    NSArray *defaultViewNames = @[LQSettingsSentenceView, LQSettingsFullTextView, LQSettingsFlashcardsView];
    NSString *preferredViewName = [LQSettings valueForKey:LQSettingsPreferredLessonView];
    if ([defaultViewNames[indexPath.row] isEqualToString:preferredViewName]){
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    } else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }
}



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    if (indexPath.section != kDefaultViewSection){
        return;
    }

    // Just turn all checks off for a minute
    for (int x=0; x<3; x++) {
        NSIndexPath *ip = [NSIndexPath indexPathForRow:x inSection:kDefaultViewSection];
        UITableViewCell …
Run Code Online (Sandbox Code Playgroud)

uitableview ios

9
推荐指数
2
解决办法
1093
查看次数

在设备上运行时出现Xcode错误:"无法分配资源"

当我尝试在任何设备上运行时,我收到错误"无法分配资源".我已经看到这是一个可能的解决方案:

sudo rm -rf /var/db/lockdown/
Run Code Online (Sandbox Code Playgroud)

我试过了,并重启了我的机器几次,但没有运气.我也尝试过改变USB端口.在使用AppCleaner卸载后,我也重新安装了Xcode.

除了错误,每当我连接设备时,它都会问我"信任这台电脑吗?"

这种情况发生在带闪电的iPhone 5和iPhone 6+以及带旧式连接器的iPad 3上.

[更新]我现在也重新安装iTunes无效.同时重置PRAM和SMC.

iphone xcode itunes ios

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

魔法记录saveWithBlock:不保存

我无法使用方法[MagicalRecord saveWithBlock:completion]来保存我的对象.当我切换到使用普通块时,它工作正常.使用2.2版开发.

下面的代码有效,我已经注释掉saveWithBlock:特定部分.executeBlock ...:方法只包装dispatch_async和executeBlockOnMainThread:替换completion:block.

[card.managedObjectContext MR_saveToPersistentStoreAndWait];
//[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) { // Replace this...
[NSObject executeBlockInBackground:^{ // With this...

    Card *localCard = [card MR_inContext:[NSManagedObjectContext MR_contextForCurrentThread]]; // MR_inContext:localContext];
    NSRange range = [localCard.fragment rangeOfString:localCard.term options:NSCaseInsensitiveSearch];
    if (range.location == NSNotFound){
        return;
    }

    NSString *fragmentString = [localCard.fragment stringByReplacingOccurrencesOfString:@" " withString:@"+"];
    NSString *url = [NSString stringWithFormat:@"https://www.lingq.com/api/languages/%@/phrases/?word=%@&frag=%@&start=%@", appDelegate.currentLanguage, localCard.term, fragmentString, @(range.location)];
    NSMutableURLRequest *request = [LQAPI requestForURL:url body:nil HTTPMethod:@"GET"];
    NSData *response = [LQAPI executeURLRequest:request];

    NSDictionary *responseDictionary = [LQAPI dictionaryFromJSONData:response];
    if (responseDictionary == nil){
        return;
    }

    NSArray *phrases = …
Run Code Online (Sandbox Code Playgroud)

core-data ios magicalrecord

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

Control-Command-Up不切换到Lion上Xcode中的对应文件.

由于三指手指在Lion中被盗,我发现自己不得不求助于键盘在.h和.m文件之间切换.两个手指左右滑动似乎不经常工作,这应该是滚动无论如何.

键盘命令应该是Control-Command-Up,但由于某种原因,这会将我从Xcode中取出并在Finder中显示项目文件.

我检查了系统偏好设置和Xcode的键绑定设置,我找不到任何错误.Xcode设置正确,我找不到任何冲突.

xcode keyboard-shortcuts osx-lion

4
推荐指数
2
解决办法
2188
查看次数

在iOS上选择MeCab Japanese tokenizer?

我在https://github.com/FLCLjp/iPhone-libmecab上找到了用于MeCab的iPhone库.我无法将其标记为所有可能的单词.具体来说,我不能将"吉本兴业"分为两部分"吉本"和"兴业".我可以使用任何选项来解决这个问题吗?iPhone库没有暴露任何东西,但它在objective-c包装器下使用C++.我假设必须有某种设置我可以更改以提供更细粒度的控制,但我不知道从哪里开始.

顺便说一句,如果有人想要标记这可能是合适的'mecab'.我还不允许创建新标签.

更新:iOS库调用libmecab.cpp中定义的mecab_sparse_tonode2().如果有人能指出我在该文件上的一些英文文档,那就足够了.

tokenize cjk ios mecab

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

FIRRemoteConfig.activateFetched()失败

我已经实现了FIRRemoteConfig并在firebase控制台中添加了我的第一个值.但是,当我尝试激活获取的值时,它失败并且我的远程值永远不可用.

    let remote = FIRRemoteConfig.remoteConfig()
    #if DEBUG
        let expiration: TimeInterval = 0
        remote.configSettings = FIRRemoteConfigSettings(developerModeEnabled: true)
    #else
        let expiration: TimeInterval = 24*60*60
    #endif

    var map = [String:NSObject]()
    let defaults = RemoteSettings.defaults.keys
    for key in defaults.keys {
        map[key.rawValue] = defaults[key] as? NSObject
    }
    remote.setDefaults(map) // Have confirmed that map is valid here

    remote.fetch(withExpirationDuration: expiration, completionHandler: { (status, error) in
        // status always == .success, but remote.activateFetched() always returns false.
        if status == .success && remote.activateFetched() {
            print("applied remote settings")
        } else …
Run Code Online (Sandbox Code Playgroud)

ios firebase swift firebase-remote-config

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

在fish shell中,如何使用通配符和变量迭代文件?

如果我跑:

for f in *1000.png
   echo $f
end
Run Code Online (Sandbox Code Playgroud)

我明白了

1000.png
11000.png
21000.png
Run Code Online (Sandbox Code Playgroud)

我想做的事情如下:

for i in 1 2 3
    for f in *$i000.png
         echo $f
    end
end
Run Code Online (Sandbox Code Playgroud)

要得到

1000.png
11000.png
21000.png
2000.png
12000.png
22000.png
3000.png
13000.png
23000.png
Run Code Online (Sandbox Code Playgroud)

相反,它什么也没输出.

我也尝试过:

for i in 1 2
    set name "*"$i"000.png"
    for f in (ls $name)
        echo $f
    end
end
Run Code Online (Sandbox Code Playgroud)

输出:

ls: *1000.png: No such file or directory
ls: *2000.png: No such file or directory
Run Code Online (Sandbox Code Playgroud)

fish

3
推荐指数
2
解决办法
2058
查看次数

Xcode 4 - 重命名/删除文件,但是找不到'找不到文件'错误

我只是使用Xcode的重构工具将一个核心数据类重命名为Player to Person.修复了因使用Xcode在重命名时遗漏的点符号导致的大约100个错误后,我到了最后一个:

Player.m - 词法或预处理器问题 - 找不到'Person.h'

Player.m不再存在于项目中,并在错误中显示为已删除(空图标).显然,既然我摆脱了它,我不希望它再存在!

为了解决这个问题,我尝试重新添加Player.h和Player.m的旧副本,以及清理.我检查了Build Phases-> Compile Sources部分,Person.m在那里,Player.m不是.Person.h确实存在.

不确定它是否重要,但我使用mogenerator来生成我的核心数据类.此外,这是我的第三个xcdatamodel版本.版本1和2使用了Player.h.

以下是错误的屏幕截图: Player.m  - 词法或预处理器问题 - 找不到'Person.h'

iphone preprocessor file-not-found lexical xcode4

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

RLMArray属性声明语法

在声明RLMArray时,第二组括号的重要性是什么?Realm是我见过这个唯一的地方.

@property NSArray<NSDictionary*> *dictionaries;  // I understand this (and it's wonderful!)
@property NSDictionary<NSString*, NSArray<NSString*>*> *dictionaryOfArraysOfStrings; // No problem with this either
@property RLMArray<Object*><Object> *objects; // What is <Object> for?
Run Code Online (Sandbox Code Playgroud)

objective-c realm

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