我总是使用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) 我的应用程序中存在问题.在获得一些统计数据之后,我生成了一个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对象这一事实有关.但我无法找到解决方案.
有人之前发现了这个问题吗?
非常感谢你.
我得到了这个方法来计算 a 中的白色像素UIImage
,我需要遍历所有像素来增加我找到的每个白色像素的计数器。我\xc2\xb4m 试图提高它的性能,但我没有\xc2\xb4t 找到更好的方法。有任何想法吗?
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我有一个 AVPlayerViewController ,里面有一个 AVPlayer ,我需要的是播放器的控件(播放、暂停、时间滑块)永远不会隐藏。现在,在播放视频大约 4 秒后,它们就会隐藏起来,您必须点击屏幕才能再次显示它们。我无法找到解决方案......有什么想法吗?谢谢!