在这里使用本教程:http://www.musicalgeometry.com/? p = 1297我使用AVCaptureSession创建了自定义叠加和图像捕获.
我试图让用户在前后摄像头之间切换.这是我在CaptureSessionManager中切换摄像头的代码:
- (void)addVideoInputFrontCamera:(BOOL)front {
NSArray *devices = [AVCaptureDevice devices];
AVCaptureDevice *frontCamera;
AVCaptureDevice *backCamera;
for (AVCaptureDevice *device in devices) {
//NSLog(@"Device name: %@", [device localizedName]);
if ([device hasMediaType:AVMediaTypeVideo]) {
if ([device position] == AVCaptureDevicePositionBack) {
//NSLog(@"Device position : back");
backCamera = device;
}
else {
//NSLog(@"Device position : front");
frontCamera = device;
}
}
}
NSError *error = nil;
if (front) {
AVCaptureDeviceInput *frontFacingCameraDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:frontCamera error:&error];
if (!error) {
if ([[self captureSession] …Run Code Online (Sandbox Code Playgroud) 这是我第一次尝试Swift或iPhone应用程序,所以不用说我不知道如何在这一点上做很多事情.
现在我有一个带有文本字段和按钮的视图控制器.我已经设法找到示例代码几乎完成我需要的东西.我想做以下事情:
1到3正在工作.但我无法弄清楚如何让UIDatePicker消失,如果再次点击进入文本字段,仍然会回到屏幕上.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var dateField: UITextField!
@IBAction func dateField(sender: UITextField) {
var datePickerView : UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Time
sender.inputView = datePickerView
datePickerView.addTarget(self, action: Selector("handleDatePicker:"), forControlEvents: UIControlEvents.ValueChanged)
}
@IBAction func DoneButton(sender: UIButton) {
//How to make datepicker disappear???
}
func handleDatePicker(sender: UIDatePicker) {
var timeFormatter = NSDateFormatter()
timeFormatter.dateStyle = .NoStyle
timeFormatter.timeStyle = .ShortStyle
dateField.text = timeFormatter.stringFromDate(sender.date)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any …Run Code Online (Sandbox Code Playgroud) 当前在iOS 13中使用模式演示时,导航栏的大小存在问题。
在大多数情况下,此效果很好,如以下屏幕截图所示:

但是,在一些屏幕中,我们会得到这种怪异的效果,导航栏的高度较低,并且与视图之间的怪异的“透视”间隙。如该屏幕截图所示:

这两个视图控制器都为其属性设置了相同的值,以模态表示,并且在其子视图上具有相同的约束(与Superview / margins / top布局指南的间距为0)。
即使使用iOS 13 SDK构建,此问题在iOS 12中也不会发生。这是iOS 13(测试版8)中的已知问题,还是我们应该在代码/故事板上进行一些调整?
为了使用iOS 13测试我的应用内购买,我已将其中一台测试设备更新为iOS 13.1 beta。
在iOS 12上,在我之前有一个特殊的Sandbox登录Settings/iTunes & App Store/Sandbox Account:

但是,在更新到iOS 13之后,此部分丢失。我试图按照iOS 12上类似问题的答案中的说明进行操作,但没有任何效果。我完全搁置了设备,并在Settings/iTunes & App Store和退出了Settings/Apple ID该设备,因此当前该设备未连接到任何帐户(真实帐户或沙箱)。至少据我所知。
我已使用Xcode 11 beta在设备上重新安装了我的应用程序,并尝试执行应用程序内购买。商店显示一个登录提示,表明这是一个沙盒购买。但是,提示仅要求输入密码,而不要求用户名或Apple ID。因此,我不知道在此应使用哪个帐户。
使用新创建的测试用户帐户的密码时,密码未知。我可以使用我的真实Apple ID帐户的密码,该密码在设备设置过程中使用过,但已断开连接。
那么,如何连接到iOS 13中的特定沙盒帐户?
我试图找到一种方法来触发一个动作,UIView当一个按钮被点击时,它会在我的里面调用一个函数swiftUI。
这是我的设置:
foo()(UIView)需要在Button(SwiftUI)被点击时运行
class SomeView: UIView {
func foo() {}
}
Run Code Online (Sandbox Code Playgroud)
UIViewRepresentablestruct SomeViewRepresentable: UIViewRepresentable {
func makeUIView(context: Context) -> CaptureView {
SomeView()
}
func updateUIView(_ uiView: CaptureView, context: Context) {
}
}
Run Code Online (Sandbox Code Playgroud)
struct ContentView : View {
var body: some View {
VStack(alignment: .center, spacing: 24) {
SomeViewRepresentable()
.background(Color.gray)
HStack {
Button(action: {
print("SwiftUI: Button tapped")
// Call …Run Code Online (Sandbox Code Playgroud) 我目前有一个子视图,它创建并添加到ViewDidLoad()中的UIView中.我正在尝试使用UIGestureRecognizers来检测点击并取消隐藏特定按钮.我目前的代码:
override func viewDidLoad() {
super.viewDidLoad()
architectView = CustomClass(frame: self.view.bounds)
self.view.addSubview(architectView)
let gestureRecognizer = UITapGestureRecognizer(target: self, action: "handleTap:")
gestureRecognizer.delegate = self
architectView.addGestureRecognizer(gestureRecognizer)
}
func handleTap(gestureRecognizer: UIGestureRecognizer) {
let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
handleTap()函数是一个简单的测试,用于查看是否正在识别抽头.按下时,此代码不会触发UIAlert?我错过了什么?
我正在使用一个大约有 7/8 年历史的旧 Xcode 项目,我已将其迁移到 Objective-C 2.0 并支持 ARC。在我开始工作之前,该项目不支持自动布局(这是在发布之前)。我设法清除了在更现代的 Xcode IDE (10.2.1) 中运行它时遇到的许多错误/问题。出于测试目的,我已将此代码实现到AppDelegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, UIScreen.mainScreen.bounds.size.width, UIScreen.mainScreen.bounds.size.height)];
[self.window setBackgroundColor:[UIColor redColor]];
self.window.rootViewController = [UIViewController new];
[self.window makeKeyAndVisible];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
这出于某种原因给了我这个:

这是当我在 iPhone X、iPhone XR 或 iPhone XS Max 上运行时的结果,看起来屏幕的顶部和底部边缘(安全区域)没有被拾取。当我调试视图层次结构时,它们也没有被选中,它只显示红色空间?当我将此代码放入新项目时,它工作正常并填满所有空间。我想知道因为这是一个旧项目,所以可能有一个构建设置限制了UIWindow扩展以允许支持新设备?
另外作为旁注,我确保该UIWindow对象没有在其他地方被操纵。
我正在尝试在UIImageView上使用CALayer添加虚线边框.我找到了一个方法,但是在swift工作,我怎么能把它转换成swift?o有另一个带有边框的imageView,这将是使用CALayer的最佳解决方案,所以它们看起来相似吗?我怎样才能获得这个
obj-c代码快速?
- (CAShapeLayer *) addDashedBorderWithColor: (CGColorRef) color {
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
CGSize frameSize = self.size;
CGRect shapeRect = CGRectMake(0.0f, 0.0f, frameSize.width, frameSize.height);
[shapeLayer setBounds:shapeRect];
[shapeLayer setPosition:CGPointMake( frameSize.width/2,frameSize.height/2)];
[shapeLayer setFillColor:[[UIColor clearColor] CGColor]];
[shapeLayer setStrokeColor:color];
[shapeLayer setLineWidth:5.0f];
[shapeLayer setLineJoin:kCALineJoinRound];
[shapeLayer setLineDashPattern:
[NSArray arrayWithObjects:[NSNumber numberWithInt:10],
[NSNumber numberWithInt:5],
nil]];
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:shapeRect cornerRadius:15.0];
[shapeLayer setPath:path.CGPath];
return shapeLayer;
}
Run Code Online (Sandbox Code Playgroud) 我对iOS开发很新(所以请原谅我的无能 - 我到处寻找!),并且正在寻找一种方法来检测点击CAShapeLayer.到目前为止,我遇到过hitTest.是hitTest最好的方法,如果是这样的话,如何在Swift中使用它,尤其是CAShapeLayers?另外,如果我有很多CAShapeLayers,我如何使用hitTest方法单独引用它们?
这就是我创建CAShapeLayer的方法:
let newBounds = CGRect(x: 0, y: 0, width: 200, height: 200)
let newShape = CAShapeLayer()
newShape.bounds = newBounds
newShape.position = view.center
newShape.cornerRadius = newBounds.width / 2
newShape.path = UIBezierPath(ovalInRect: newShape.bounds).CGPath
newShape.lineWidth = 42
newShape.strokeColor = UIColor(red: 222/255.0, green: 171/255.0, blue: 66/255.0, alpha: 1.0).CGColor
newShape.fillColor = UIColor.clearColor().CGColor
newShape.strokeStart = 0.2
newShape.strokeEnd = 0.4
view.layer.addSublayer(newShape)
Run Code Online (Sandbox Code Playgroud) 我在titleView导航栏中添加了一个navigationItem.titleView用于 Master/Detail VC的自定义。在将设备的方向更改为横向时,titleView下MasterViewController工作正常,但DetailViewController titleView消失。在将方向更改回纵向时titleView出现DetailViewController。我还附上了源代码和视频的链接。
这是有意的行为还是我犯了错误,还是苹果方面的问题?
//Custom Title View:
class TitleView: UIView {
override func sizeThatFits(_ size: CGSize) -> CGSize {
return CGSize(width: 50, height: 20)
}
}
class DetailViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//Adding titleView for Master/Detail VC:
navigationItem.titleView = {
//Setting frame size here, did not make any difference
let view = TitleView(frame: .zero)
view.backgroundColor = .red
return view
}()
}
} …Run Code Online (Sandbox Code Playgroud) ios ×10
swift ×6
iphone ×2
objective-c ×2
uikit ×2
appdelegate ×1
cashapelayer ×1
front-camera ×1
ios13 ×1
storyboard ×1
swiftui ×1
uiimageview ×1
uiview ×1
uiwindow ×1
xamarin ×1
xcode ×1