我正在Swift中编写一个脚本,我希望它能够修改一些与脚本本身始终存在于同一目录中的文件.有没有办法从内部获取脚本的路径?我试过了:
print(Process.arguments)
Run Code Online (Sandbox Code Playgroud)
但是,它只输出实际给予脚本的路径,该路径可能是完全解析的路径,只是文件名,或者介于两者之间的任何内容.
我打算运行脚本swift /path/to/my/script.swift
.
我在UILabel工作过.但是不推荐使用setLineBreakMode.我一直在使用NSAttributedString.但UILabel setLineBreakMode是之后UILabel setNumberOfLines else不起作用.
之前:
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(42.0f, 10.0f, 275.0f, 50.0f)];
label.text = @"XXXXXX";
memoLabel.textAlignment = UITextAlignmentLeft;
memoLabel.numberOfLines = 2;
memoLabel.lineBreakMode = UILineBreakModeTailTruncation;
memoLabel.font = [UIFont systemFontOfSize:11];
memoLabel.backgroundColor = [UIColor clearColor];
Run Code Online (Sandbox Code Playgroud)
IOS 6之后:
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
paragraphStyle.alignment = NSTextAlignmentLeft;
NSAttributedString *string
= [[NSAttributedString alloc] initWithString:text
attributes:[NSDictionary
dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:11],
NSFontAttributeName,
paragraphStyle, NSParagraphStyleAttributeName,nil]];
[paragraphStyle release];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(42.0f, 10.0f, 275.0f, 50.0f)];
label.attributedText = string;
[string relase];
Run Code Online (Sandbox Code Playgroud)
我希望在显示之前和之后都一样.如何显示多行?
我正在开发一个应用程序来创建图像,其色调,饱和度和值根据不同的参数而变化.出于性能原因,分别渲染色调,饱和度和值组件,然后使用Photoshop样式混合模式(乘法,叠加,屏幕,色调等)将它们合成在一起是有意义的.
我已经知道如何为RGB图像执行此操作:将每个通道分成自己的红色,绿色或蓝色图像,其值从透明到该通道的颜色.将它们一起层叠在黑色上并将它们的混合模式设置为屏幕,嘿,你有你的彩色图像:
如何使用HSV值定义的图像执行此操作?我的应用程序经常更改其中一个通道而不更改其他两个通道,如果我可以在GPU上合成现有图像而不是每次更改时都呈现全新图像,它将加快我的渲染速度.
这是一个例子:
在此示例中,色调在圆周周围从0º到360º变化,饱和度从中心到边缘从0%到100%变化,亮度(V)在圆周周围从0%变化到100%.这是我的应用程序创建的典型图像.是否有一些常见的混合模式可以用来分别创建这些通道并以数学上完美的方式组合它们?
我正在研究如何将属性(在这种情况下为整数)添加到所有UIView
实例,无论它们是否是子类.是否使用objc_setAssociatedObject()
并objc_getAssociatedObject()
在一个类别中以适当的Apple认可方式执行此操作?
我听说过一些关注,这构成了"运行时黑客",并且可能导致难以追踪和调试的问题.有没有人见过这类问题?有没有更好的方法在UIView
没有子类化的情况下向所有实例添加整数属性?
更新:我不能只使用tag
,因为这需要在已经tag
用于其他事情的代码库中使用.相信我,如果我能用tag
它,我会的!
我有一个基于Travis CI的Objective-C iOS库.我刚刚在我的.travis.yml
文件中启用了静态分析,它发现了一个问题(一个死的存储),但它并没有使Travis的构建失败.这是我的相关行.travis.yml
(为了可读性而换行):
- set -o pipefail && xcodebuild analyze
-workspace Example/BonMot.xcworkspace
-scheme BonMot-Example
-destination 'name=iPhone 6' ONLY_ACTIVE_ARCH=NO | xcpretty
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能在此行中发出警告以使Travis CI上的构建失败?您可以在此处查看我项目中的相关拉取请求.
我的开源库需要能够调用UIApplication.shared.preferredContentSizeCategory
.但是UIApplication.shared
在扩展中不可用.构建错误表明我找到了一种基于视图控制器的方法来解决我的问题,但我正在编写一个库,因此我无法访问任何视图控制器.有没有办法获得扩展的根视图控制器,或者获取最外层的方法UITraitEnvironment
?
我支持iOS 9+,但如果可以的话,这个功能可能是10+.
BindableObjects
到目前为止,我一直在使用SwiftUI并了解etc 的概念(至少我希望我这样做)。
我遇到了一个愚蠢的问题,似乎找不到以下答案:如何初始化@Binding
变量?
我有以下代码:
struct LoggedInView : View {
@Binding var dismissView: Bool
var body: some View {
VStack {
Text("Hello World")
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的预览代码中,我想传递以下类型的参数Binding<Bool>
:
#if DEBUG
struct LoggedInView_Previews : PreviewProvider {
static var previews: some View {
LoggedInView(dismissView: **Binding<Bool>**)
}
}
#endif
Run Code Online (Sandbox Code Playgroud)
我将如何进行初始化?尝试过:
Binding<Bool>.init(false)
Binding<Bool>(false)
Run Code Online (Sandbox Code Playgroud)
甚至:
@Binding var dismissView: Bool = false
Run Code Online (Sandbox Code Playgroud)
但是没有一个...有什么想法吗?
当我学习目标C时,我的理解是新的和不完整的.块的概念与函数非常相似.他们甚至看起来几乎相同:
名为'multiply'的FUNCTION
#import <Foundation/Foundation.h>
int multiply (int x, int y)
{
return x * y;
}
int main(int argc, char *argv[]) {
@autoreleasepool {
int result = multiply(7, 4); // Result is 28.
NSLog(@"this is the result %u",result);
}
}
Run Code Online (Sandbox Code Playgroud)
BLOCK名为'Multiply'
#import <Foundation/Foundation.h>
int (^Multiply)(int, int) = ^(int num1, int num2) {
return num1 * num2;
};
int main(int argc, char *argv[]) {
@autoreleasepool {
int result = Multiply(7, 4); // Result is 28.
NSLog(@"this is the result %u",result);
} …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的应用程序,包含一个视图控制器.我从Xcode 7 GM单视图应用程序模板开始,但随后删除了主故事板,并设置了我的视图控制器,如下所示:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let vc = ViewController()
window = UIWindow(frame: UIScreen.mainScreen().bounds)
window!.rootViewController = vc
window!.makeKeyAndVisible()
return true
}
Run Code Online (Sandbox Code Playgroud)
在我的信息plist中,我在支持的界面方向下指定了所有方向,并且应用程序在iPad上旋转到所有方向.
但是,在我的简单视图控制器中,永远不会调用shouldAutorotate()
和supportedInterfaceOrientations()
方法.这是一个问题,因为我正在尝试启用和禁用自动旋转的UI控件.什么可能阻止这些方法被调用?
这里的示例项目(需要Swift 2)
¹non-UINavigationController
我有一个使用 CocoaPods 分发的 Objective-C 项目,示例项目配置了 Podfile,以便它可以通过 CocoaPods 测试库的安装。这是 podspec 的相关部分:
s.default_subspec = 'Core'
s.subspec 'Core' do |sp|
sp.source_files = 'Pod', 'Pod/Classes/**/*'
sp.private_header_files = "Pod/Classes/Private/*.h"
end
Run Code Online (Sandbox Code Playgroud)
请注意,我隐藏了一些文件,Pod/Classes/Private
因为我不想将它们公开为公共 API。
我的示例项目中有一个测试目标,我想将文件导入Pod/Classes/Private
到我的测试中,这样我就可以测试它们。
我怎样才能做到这一点?我是否必须添加一个Testing
子规范,并希望没有人使用它?如果我尝试#import "SomePrivateHeader.h"
在测试目标中执行此操作,则会收到一个简单的“找不到文件”错误。
注意:我并不是想隐藏敏感信息。只是试图保护用户免受实施细节的影响。