小编JAH*_*lia的帖子

为UIView添加褪色和透明度

我知道如何制作和动画像一个在谈到与iOS新应用程序商店应用程序的共享子图的图6+(见附件截图),但我不知道如何添加漂亮的透明度着色效果在这个观点上.任何人都可以提供代码示例,使其UIView看起来与截图中的完全相同?

PS alphaUIView独有的属性不做这样的事情.

在此输入图像描述

iphone objective-c uiview ios quartz-core

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

Swift:string.characters.count为阿拉伯字符串返回错误的数字

我有以下用阿拉伯语写的文本,当我调用text.characters.count它时,它返回298个字符而不是实数,即300.

文本:

هنالكالعديدمنالأنواعالمتوفرةلنصوصلوريمإيبسوم,ولكنالغالبيةتمتعديلهابشكلماعبرإدخالبعضالنوادرأوالكلماتالعشوائيةإلىالنص.إنكنتتريدأنتستخدمنصلوريمإيبسومما,عليكأنتتحققأولاأنليسهناكأيكلماتأوعباراتمحرجةأوغيرلائقةمخبأةفيهذاالنص.بينماتعملجميعمولداتنصوصا

提到在文本之前和之后没有周围的空白区域.

utf8.characters.count也返回相同的错误号码.

如何在这样的字符串中获得正确数量的字符?

string ios swift

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

将 SwiftUI 按钮绑定到 AnySubscriber,就像 RxCocoa 的按钮点击一样

我使用以下UIViewController基于RxSwift/RxCocoa的代码编写一个非常简单的 MVVM 模式来绑定UIButton点击事件以触发一些Observable工作并侦听结果:

import UIKit
import RxSwift
import RxCocoa

class ViewController: UIViewController {

    @IBOutlet weak var someButton: UIButton!

    var viewModel: ViewModel!
    private var disposeBag = DisposeBag()

    override func viewDidLoad() {
        super.viewDidLoad()
        viewModel = ViewModel()
        setupBindings()
    }

    private func setupBindings() {
        someButton.rx.tap
        .bind(to: self.viewModel.input.trigger)
        .disposed(by: disposeBag)

        viewModel.output.result
            .subscribe(onNext: { element in
            print("element is \(element)")
            }).disposed(by: disposeBag)
    }
}

class ViewModel {

    struct Input {
        let trigger: AnyObserver<Void>
    }

    struct Output {
        let result: …
Run Code Online (Sandbox Code Playgroud)

ios rx-swift rx-cocoa swiftui combine

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

如果iphone语言不是英语,searchDisplayController不会显示结果

searchDisplayController当使用如下方法搜索英语和阿拉伯语单词时,我有一个完美的工作:

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSInteger)scope
{
    NSString *query = self.searchDisplayController.searchBar.text;

    if (query && query.length) {
        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ClientName contains[cd] %@", query]; 
        [searchResultController_.fetchRequest setPredicate:predicate];       
    }

    NSError *error = nil;
    if (![[self searchResultController] performFetch:&error]) {
        // Handle error
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        exit(-1);  // Fail
    }      
}
Run Code Online (Sandbox Code Playgroud)

但是,如果iphone语言是英语,这可以正常工作,但是如果我将iPhone语言改为阿拉伯语(全局设置)并尝试用阿拉伯语或英语单词搜索,searchResultsController则不会显示结果,为什么?

ps当我在查询中放置一个静态阿拉伯语单词时:NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ClientName contains[cd] %@", @"?????"];searchDisplayController将显示阿拉伯语单词 的正确结果?????

编辑:我试图在这样的代码中构建谓词:

    NSExpression *clientNameEx=[NSExpression expressionForKeyPath:@"ClientName"];
    NSExpression *aClientEx=[NSExpression expressionForConstantValue:query];
    NSPredicate *predicate=[NSComparisonPredicate predicateWithLeftExpression:clientNameEx
                                                             rightExpression:aClientEx 
                                                                    modifier:NSDirectPredicateModifier
                                                                        type:NSContainsPredicateOperatorType …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c arabic uisearchdisplaycontroller ios

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

带有unicode文本的UILabel太多了

我有180 UILabels(的子视图UITableViewCells)在iPad程序155宽度X 155高度为每个UILabel,而且每一个包含Unicode文本(阿拉伯语)的一个大的量,当我向下滚动TableView它挂1秒钟,然后保持正常滚动,这发生在用户每次滚动尝试时,并在iPAD2设备上进行测试.

但是,当我将文本更改为英语(也有大量英文文本)时,TableView不会挂起并正常滚动.

有人知道如何用Unicode文本解决这个问题?

非常感谢你.

编辑:

这里的代码很大,所以简单来说,我UILabel用这样的循环创建每个:[[[UILabel alloc] initWithFrame:CGRectZero] autorelease];cellForRowAtIndexPath方法中,然后根据接口方向在同一方法中使用框架,之后我将每个添加UILabel到单元格中,如下所示:[cell.contentView addSubView:myLabel];.每个单元格包含4个'UILabels',所以我总共有45个单元格,仅此而已,直接和简单的代码.

iphone xcode objective-c ipad ios

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

基本故事板仅考虑多语言应用程序中的LTR接口

我有一个应用程序,包括两种语言:阿拉伯语(从右到左)和英语(从左到右),我用Base InternationalizationAuto Layout来简单,并使用一个故事板(基本故事板)为此目的,但是,因为我住在一个国家阿拉伯语是主要语言,我开始用阿拉伯语界面(RTL)设计我的基础故事板,我为每个水平约束选中了"尊重语言方向"选项.
从项目设置添加英语后,翻译其故事板字符串文件,并在英文iPhone上运行应用程序(设置 - >常规 - >国际 - >语言 - >英文),界面从未更改为LTR,保持原样(RTL),我试图取消选中"尊重语言方向"选项,但无济于事.
但是,如果场景相反,一切都会正常工作,即如果我使用英语(LTR)在基础故事板上设计界面,当我在阿拉伯语iPhone上运行应用程序时,界面将转换为RTL.

我怎么能告诉基本故事板我正在设计一个RTL接口,所以当iPhone的语言(例如)英语时它应该将这个界面翻转到LTR?

ps测试环境是Xcode 5.1.1iPhone 4S iOS 7.1

xcode internationalization ios autolayout

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

SwiftUI:ViewModifier 不监听 onReceive 事件

我有一个自定义ViewModifier,它只返回附加了onReceive修饰符的相同内容,onReceive不会触发,这里是一个示例代码,您可以复制、粘贴和运行XCode

import SwiftUI
import Combine

class MyViewModel: ObservableObject {
    @Published var myProperty: Bool = false
}
struct ContentView: View {
    @ObservedObject var viewModel: MyViewModel

    var body: some View {
        Text("Hello, World!")
        .modifier(MyOnReceive(viewModel: viewModel))
            .onTapGesture {
                self.viewModel.myProperty = true
        }
    }
}

struct MyOnReceive: ViewModifier {
    @ObservedObject var viewModel: MyViewModel

    func body(content: Content) -> some View {
        content
            .onReceive(viewModel.$myProperty) { theValue in
                print("The Value is \(theValue)") // <--- this is not executed
        } …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

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

SwiftUI:在 LazyVGrid 中显示可变长度字符串

我正在尝试构建一个垂直的字符串网格,这些字符串具有可变的长度,可以并排显示(例如社交媒体标签的集合),如下所示:

struct ContentView: View {
    let data = ["first text",
    "second text",
    "long text for testing",
    "short",
    "some medium text"
    ]
    let gridItem = GridItem(.adaptive(minimum: 40, maximum: 300))
    var body: some View {
        ScrollView {
            LazyVGrid(columns: [gridItem]) {
                ForEach(data, id:\.self) { item in
                    Text(item)
                        .lineLimit(1)
                        .background(Color.red)
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但问题LazyVGrid是它与初始化程序中定义的最小项目宽度相关,这不允许它动态适应每个项目的宽度。

上述代码的结果是:

在此输入图像描述

我的问题是:如何在 SwiftUI 的垂直滚动视图中显示任何可变长度字符串的动态列表?

ios swift swiftui lazyvgrid

6
推荐指数
0
解决办法
1789
查看次数

XCode 15 #在多个设备上预览宏

我找不到使用新宏在多个设备上预览视图SwiftUI的方法。它正在使用并在画布上显示并排预览,每个预览都使用正确的目标设备,但情况并非如此,这是我的代码:XCode 15#PreviewXCode 14XCode 15

struct ContentView: View {
    var body: some View {
        Text("Hello, world!")
    }
}

#Preview {
    ContentView()
        .previewOnDevices()
}

//#Preview {
//    ContentView()
//        .previewOnDevices()
//}

extension View {
    func previewOnDevices() -> some View {
        ForEach(DeviceName.all, id: \.self) { devicesName in
                previewDevice(PreviewDevice(rawValue: devicesName))
                .previewDisplayName(devicesName)
        }
    }
}

enum DeviceName: String, CaseIterable {
    //xcrun simctl list devicetypes
    case iPhoneSE = "iPhone SE (3rd generation)"
    case iPhone13Mini = "iPhone 13 mini"

    static var …
Run Code Online (Sandbox Code Playgroud)

xcode swift swiftui xcode15 swift-macro

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

Swift Macros:找不到外部宏实现类型

我在我的项目中使用通过 SwiftPM 安装的MetaCodable宏,当我尝试使用 Microsoft Azure 管道并使用我的本地计算机作为运行代理 (MBP M1 Max - Sonoma - XCode 15) 来构建项目时,我收到以下错误消息:

error: external macro implementation type 'CodableMacroPlugin.CodedAt' could not be found for macro 'CodedAt'

这里有些人建议添加-external-plugin-pathother Swift flags构建设置中,但这并不能解决问题。

这个线程中,有些人还建议添加-load-plugin-library、 或-plugin-path、 或-load-plugin-executableto other Swift flags,我使用值尝试了这些选项的每个选项:$(BUILT_PRODUCTS_DIR)#MetaCodable但我在每个 CI 构建中都遇到了相同的错误。

我还在 Azure 的管道构建日志中收到此警告:

"output": "<unknown>:0: warning: compiler plugin not loaded: '/Users/my_user_name/Library/Developer/Xcode/DerivedData/MyProject/Build/Products/Release/CodableMacroPlugin; failed to initialize /Users/my_user_name/vsts-agent-osx-x64-2.183.1/_work/9/MyProject/Data/Models/SomeModel.swift

任何对此的想法都值得赞赏。

ios azure-pipelines xcode15 swift-macro swift5.9

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