小编Moi*_*azi的帖子

检测表已在iOS 13上关闭

在iOS 13之前,提供了用于覆盖整个屏幕的视图控制器。并且,在关闭后,将viewDidAppear执行父视图控制器功能。

现在,iOS 13默认将表单显示为视图控制器,这意味着卡将部分覆盖基础视图控制器,这意味着viewDidAppear不会被调用,因为父视图控制器从未真正消失过。

有没有一种方法可以检测到所显示的视图控制器工作表已被解雇?我可以在父视图控制器中重写某些其他功能,而不是使用某种委托

uiviewcontroller uikit ios swift ios13

41
推荐指数
7
解决办法
8950
查看次数

如何在UIImagepickercontroller中隐藏状态栏?

我是iOS开发的新手.我试图隐藏状态栏UIImagePickerController.每当我点击"拍照"时,都会出现状态栏.它没有隐藏.我希望状态栏只能隐藏在UIImagePickerController.

这是我的代码,

- (IBAction)takePhoto:(UIButton *)sender
{
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentViewController:picker animated:YES completion:NULL];
}


- (void)imagePickerController:(UIImagePickerController *)picker     didFinishPickingMediaWithInfo:(NSDictionary *)info
{   
    [self statusBar:YES];
    UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
    self.imageView.image = chosenImage;
    [picker dismissViewControllerAnimated:YES completion:NULL];

}


- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissViewControllerAnimated:YES completion:NULL];
}


-(void)statusBar:(BOOL)status
{
    [[UIApplication sharedApplication] setStatusBarHidden:status];
}
Run Code Online (Sandbox Code Playgroud)

如何隐藏状态栏UIImagePickerController

iphone objective-c statusbar ios ios7

31
推荐指数
6
解决办法
2万
查看次数

解雇UIPrintInteractionController

我正在使用UIPrintInteractionController从rect中呈现它.

UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
// than set printing settings
...
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    [controller presentFromRect:rect inView:view animated:YES completionHandler:completionHandler];
Run Code Online (Sandbox Code Playgroud)

比我设置页数(> 1)并选择一台打印机.在设备旋转之前我打电话

[controller dismissAnimated:animated];

根据Xcode文档: You should dismiss the printing options when they are presented in a sheet or animated from a rectangle and the user changes the orientation of the device.

当我UIPrintInteractionController在旋转后出现时,打印份数被设置回1(如在初始视图中),而打印机保持选中状态.UIPrintInfo的Ivar _copies是私有的,所以我无法在旋转期间获取它并存储.

如何在旋转后恢复打印页数?

ipad ios uiprintinteractioncntrler

30
推荐指数
1
解决办法
2165
查看次数

如何在ios Swift中将JSON转换为String?

以下是Json输出的代码:

let params : [[String : AnyObject]]  = [["name" : "action", "value" : "pay" ],["name" : "cartJsonData" , "value" : ["total": 1,"rows":[["quantity": “1” ,"title":"Donation for SMSF India - General Fund","price":"1","itemId":"DN001","cost": “1”,”currency":"INR"]]]], ["name" : "center", "value" : "Chennai"], ["name" : "flatNumber", "value" : "503"], ["name" : "panNumber", "value" : ""], ["name" : "payWith"], ["name" : "reminderFrequency","value" : "Monthly"],  ["name" : "shipToAddr1"], ["name" : "shipToAddr2"], ["name" : "shipToCity"], ["name" : "shipToCountryName" , "value" : "India"], ["name" : "shipToEmail", "value" : “01034_186893@gmail.com"], ["name" …
Run Code Online (Sandbox Code Playgroud)

json ios swift

22
推荐指数
4
解决办法
5万
查看次数

UIPopover presentFromBarButton偏离中心

我在一个项目中注意到,由于某种原因,右侧栏按钮项目上的弹出框的位置似乎偏向右侧.我尝试使用UIButton作为自定义视图,然后从该按钮呈现弹出窗口,但是如果我实际上为它提供了'居中'值,则popover似乎忽略了showFromRect.

偏离中心的人行道

这背后的代码非常简单:

- (void)viewDidLoad {
    [super viewDidLoad];

     UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"share"] style:UIBarButtonItemStylePlain target:self action:@selector(shareTap:)];

     self.navigationItem.rightBarButtonItem = button;
}

- (void)shareTap:(UIBarButtonItem *)button {
    self.popover = [[UIPopoverController alloc] initWithContentViewController:[[UIViewController alloc] init]];

    [self.popover presentPopoverFromBarButtonItem:button permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我切换到使用内部按钮,如上所述,我看到类似的行为(注意颜色变化,因此图像显示).

使用内部按钮

这个代码仍然相当简单:

- (void)viewDidLoad {
    [super viewDidLoad];

    UIButton *innerButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 22, 22)];
    [innerButton setImage:[UIImage imageNamed:@"share"] forState:UIControlStateNormal];
    [innerButton addTarget:self action:@selector(shareTap:) forControlEvents:UIControlEventTouchUpInside];

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:innerButton];;
}

- (void)shareTap:(UIButton *)button {
    self.popover = [[UIPopoverController alloc] initWithContentViewController:[[UIViewController alloc] init]];

//    CGRect …
Run Code Online (Sandbox Code Playgroud)

uibarbuttonitem uipopovercontroller ios

18
推荐指数
1
解决办法
1067
查看次数

在swift中从另一个ViewController调用函数

我已经查看了Stackoverflow但我无法得到答案.我想创建停止在另一个ViewController中播放声音的函数.但是当我点击停止按钮时,它会破解并显示"EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)".这是我的代码.

第一个ViewController

import UIKit
import AVFoundation

class FirstVC: UIViewController {

   var metronome: AVAudioPlayer!
   override func viewDidLoad() {
       super.viewDidLoad()
   do {
        let resourcePath1 = Bundle.main.path(forResource: "music", ofType: "mp3")
        let url = NSURL(fileURLWithPath: resourcePath1!)
        try metronome = AVAudioPlayer(contentsOf: url as URL)

        metronome.prepareToPlay()
        metronome.play()
    } catch let err as NSError {
        print(err.debugDescription)
    }
}
Run Code Online (Sandbox Code Playgroud)

另一个Viewcontroller是

import UIKit
class SecondVC: UIViewController {
   var metronomePlay = FirstVC()

@IBAction func stopBtnPressed(_ sender: Any) {
   metronomePlay.metronome.stop() //"EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)"
   }
}
Run Code Online (Sandbox Code Playgroud)

ios avplayer swift

16
推荐指数
6
解决办法
3万
查看次数

如何在精灵工具包中创建进度条?

我想在Sprite Kit中创建自己的进度条.
我想我需要图像 - 一个完全空的进度条和填充的进度条.
我有那些图像,我把它们放在空的一个上面,它们是常规的,SKSPriteNodes现在我无法弄清楚如何在我需要的地方剪切我填充的图像?

如何在特定点剪切SKSpriteNode图像?也许质地?

ios progress-bar sprite-kit

13
推荐指数
2
解决办法
8722
查看次数

在Swift中使用选择器的正确方法

我正在以编程方式创建视图,并添加一个函数,以便操作响应UIControlEvents.TouchUpInside事件:

button.addTarget(self, action: action, forControlEvents: 
UIControlEvents.TouchUpInside)
Run Code Online (Sandbox Code Playgroud)

因此,通过进入文档,我已将此操作添加为选择器:

#selector(ViewController.onRegularClick)
Run Code Online (Sandbox Code Playgroud)

然后XCode抱怨:

#selector的参数是指未向Objective-C公开的方法

所以我必须设置处理函数:

@objc func onRegularClick(sender: UIButton)
Run Code Online (Sandbox Code Playgroud)

有人可以通过引导我阅读文档,或者甚至给出简短的解释,将这个菜鸟放在正确的方向:

  1. 为什么我不能再简单地将函数名称String传递给动作?
  2. 如何按照Swift方式实现这个?使用Selector类?
  3. 为什么我们需要传递@objc关键字以及它如何影响函数?

谢谢!

selector ios swift

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

UIStackView - 想要一个百分比来定义每个项目

我想将两个视图放入UIStackView.我希望顶部项目始终是空间的30%,无论它出现什么设备(或方向).因此,我希望底层视图为70%.如何告诉UIStackView我想使用百分比?

示例结果视图

interface-builder ios swift uistackview

11
推荐指数
1
解决办法
3986
查看次数

在 iOS13 中更改状态栏背景颜色

在 iOS13 中,我无法再更改状态栏的背景颜色,因为无法再使用“键值”访问状态栏。有没有人弄清楚这是怎么可能的,或者是否知道在 iOS13 的最终版本中是可能的?

我遇到了不同的建议,比如使用 UIApplications StatusBarView(在 xcode 11、beta 7 中不再可用)或使用 statusbarmanager。两者都不允许访问状态栏。

let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
if statusBar.responds(to: #selector(setter: UIView.backgroundColor)) {
  statusBar.backgroundColor = <Some Color>
}
Run Code Online (Sandbox Code Playgroud)

我希望状态栏能够获得我需要的背景颜色。

objective-c statusbar ios ios13

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