小编die*_*men的帖子

使用swib中的Nib自定义UIView,而不在视图控制器中使用loadFromNib

我总是使用loadNibNamed方法将自定义视图加载到视图控制器中,但现在我试图避免在自定义视图之外调用该方法使其更可重用,这样如果另一个人使用我的自定义视图,他只需要在没有loadFromNib的情况下实例化视图,例如:

var myView: MyView = MyView()
Run Code Online (Sandbox Code Playgroud)

将视图添加到视图控制器的视图就足够了,自定义视图会将nib加载到其自身内部.我试图在Swift中做到这一点,在ObjC中我发现了代码就像这个答案:UIView和initWithFrame以及一个NIB文件.如何加载NIB文件? 但是在swift中我不能使用答案中使用的init:

- (id)initWithFrame:(CGRect)frame 
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code.
        //
        [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
        [self addSubview:self.view];
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

我有这个方法,它以无限循环结束:

override init(frame: CGRect) {
    super.init(frame: frame)
    self.loadFromNibNamed("MyView")
}
Run Code Online (Sandbox Code Playgroud)

我也尝试在MyView中添加另一个视图作为IBOutlet,就像其他答案所说并使用所有内容:

@IBOutlet var view: UIView!

override init() {
    super.init()
    NSBundle.mainBundle().loadNibNamed("MediaPlayerView", owner: self, options: nil)
    self.addSubview(self.view)
}

override init(frame: CGRect) {
    super.init(frame: frame)
    NSBundle.mainBundle().loadNibNamed("MediaPlayerView", owner: self, options: nil)
    self.addSubview(self.view)
}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    NSBundle.mainBundle().loadNibNamed("MediaPlayerView", …
Run Code Online (Sandbox Code Playgroud)

uiview nib ios swift

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

UIActivityViewController没有显示"在iBooks中打开"选项

我的应用程序中存在问题.在获得一些统计数据之后,我生成了一个PDF文件,我想要显示一个UIActivityViewController主要有"在iBooks中打开"和"通过邮件发送"选项(其他像"在Dropbox中打开"会很棒).

那就是在尝试使用UIActivityViewController之前,我使用的是UIDocumentInteractionController,其代码如下:

self.docController = [UIDocumentInteractionController interactionControllerWithURL:url];
self.docController.delegate = self;
[_docController presentOpenInMenuFromRect:_openInIBooksButton.bounds inView:self.openInIBooksButton animated:YES];
Run Code Online (Sandbox Code Playgroud)

其中url是/Documents/../statistics.pdf之类的路径.它工作,它显示了一个弹出窗口,按钮在iBooks中打开并在Dropbox中打开,但不是Send by Mail.现在我用以下代码更改了它:

NSArray* itemsToShare = [NSArray arrayWithObjects:pdfData, nil];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];
activityVC.excludedActivityTypes = @[UIActivityTypeCopyToPasteboard]; //or whichever you don't need
[self presentViewController:activityVC animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

其中pdfData是NSData对象.它也有效,但现在它显示了通过电子邮件发送它的选项,但不是iBooks选项.我疯了,因为我没有找到这种行为的原因,我需要两个选项,iBooks和Mail.

我不知道它是否与UIDocumentInteractionController有一个以.pdf结尾的路径并且UIActivityViewController只有一个NSData对象这一事实有关.但我无法找到解决方案.

有人之前发现了这个问题吗?

非常感谢你.

pdf email objective-c ibooks uiactivityviewcontroller

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

优化 Swift 中的嵌套 for 循环

我得到了这个方法来计算 a 中的白色像素UIImage,我需要遍历所有像素来增加我找到的每个白色像素的计数器。我\xc2\xb4m 试图提高它的性能,但我没有\xc2\xb4t 找到更好的方法。有任何想法吗?

\n\n
func whitePixelCount() -> Int {\n    let width = Int(image.size.width)\n    let height = Int(image.size.height)\n    var counter = 0\n    for x in 0..<(width*scale) {\n        for y in 0..<(height*scale) {\n            // We multiply per 4 because of the 4 channels, RGBA, but later we just use the Alpha\n            let pixelIndex = (width * y + x) * 4\n\n            if pointer[pixelIndex + Component.alpha.rawValue] == 255 {\n                counter += 1\n            }\n        }\n    }\n    return counter\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n …

for-loop uiimage ios swift

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

始终显示 AVPlayer 控件

我有一个 AVPlayerViewController ,里面有一个 AVPlayer ,我需要的是播放器的控件(播放、暂停、时间滑块)永远不会隐藏。现在,在播放视频大约 4 秒后,它们就会隐藏起来,您必须点击屏幕才能再次显示它们。我无法找到解决方案......有什么想法吗?谢谢!

uicontrol avplayer swift avplayerviewcontroller

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