我正在尝试将我的iPhone应用程序转换为通用应用程序.我将设备切换到Universal并让Xcode为我做了一个MainWindow-iPad.xib的事情,现在当我在iPhone模拟器中运行应用程序时,它工作正常,但是当我在iPad模拟器中运行它时,我得到一个白色屏幕和Application windows are expected to have a root view controller at the end of application launch错误.我已经阅读了一些关于同样问题的其他帖子,但没有一个仅限于一个设备.
这是我的application:didFinishLaunchWithOptions:方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
/* some dropbox setup stuff */
// INIT VIEW AND CORE DATA
RootViewController *rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
NSManagedObjectContext *context = [self managedObjectContext];
if (!context) {
// Handle the error.
}
rootViewController.managedObjectContext = context;
UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.navigationController = aNavigationController;
[_window addSubview:[_navigationController view]];
[_window makeKeyAndVisible];
[rootViewController release];
[aNavigationController release]; …Run Code Online (Sandbox Code Playgroud) 我的应用程序(音乐家的节拍器应用程序)中有一项功能可以调暗屏幕以节省电池寿命.要设置亮度,我正在使用:
[UIScreen mainScreen].brightness = 0.1;
Run Code Online (Sandbox Code Playgroud)
我在viewDidLoad(...)中启动app保存原始亮度并将其保存到我的用户默认值.
在应用程序中更改视图时,我从用户默认值中检索原始亮度并通过调用恢复:
[UIScreen mainScreen].brightness = originalBrightness;
Run Code Online (Sandbox Code Playgroud)
这很好用.我有NSLog(...)消息显示原始值等...所以机制工作.
我遇到的问题是如何在按下主页按钮时恢复应用程序退出时的原始亮度.
我已经为我的应用程序委托方法添加了类似的代码:
applicationWillResignActive(...)
applicationDidEnterBackground(...)
applicationWillTerminate(...)
Run Code Online (Sandbox Code Playgroud)
它们每个都有一个方法调用,用于在视图中设置屏幕亮度,类似的NSLog(...)显示检索到的原始亮度...并且它都是正确的.我也已调试并且正在调用设置亮度...但是应用程序退出,设备屏幕仍处于较低的调暗级别.
最后,如果单击顶部的"锁定"按钮,然后按"主页"按钮将其唤醒...亮度正确.
我的怀疑是,当应用程序退出时我设置亮度的调用触发的任何操作或事件都没有通过,可能是由于状态无效或类似.
此外,我的应用程序设置为不在后台运行,在info.plist中设置为:
Application does not run in background YES
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
谢谢!
如前所述 - 我是第一个订单的Objective-C新手,但是已经阅读了4本关于这个主题的实用书籍和一堆电子书和文档,我仍然无法找到我正在寻找的东西.
我有一个顶级内容视图控制器,它想要从应用程序委托的window属性的物理维度配置其视图属性.这是几个人已经问过的问题.([UIScreen mainScreen]不会因为此论坛之前已经多次播出的原因而削减它).因此,逻辑方法是内容视图控制器读取应用程序委托窗口的框架.现在,我发现接近这个的唯一答案是使用[[[UIApplication sharedApplication] window] frame]- 但是,这只有在窗口属性被设为keyAndVisible时才有效.内容视图控制器需要在获取makeKeyAndVisible 之前读取app delegate的window属性.代码按此顺序排列....
应用代表:
- (BOOL) application: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions {
// This next line is a test window frame for R&D purposes....
[self setWindow: [[UIWindow alloc] initWithFrame: CGRectMake(0.0f, 20.0f, 320.0f, 320.0f)]];
if ([self window]) {
contentViewController = [[ContentViewControl alloc] initWithNibName: nil bundle: nil]; // Content view controller instantiated here
if (contentViewController) {
[[self window] addSubview: [contentViewController view]];
[[self window] layoutSubviews]; …Run Code Online (Sandbox Code Playgroud) 我是qt编程的新手,所以如果你发现它是一个noob问题请不要介意.我在主窗口中添加了一个按钮,但是当我运行代码时,按钮不会显示.这是我的代码:
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtWidgets>
MainWindow::MainWindow(QWidget *parent)
{
QPushButton *train_button = new QPushButton(this);
train_button->setText(tr("something"));
train_button->move(600, 600);
train_button->show();
}
Run Code Online (Sandbox Code Playgroud)
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
MainWindow::~MainWindow()
{
delete ui;
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我使用TabBar模板在Xcode 4中启动了一个新项目.我注意到MainWindow.xib项目中没有文件.
我正在研究WPF应用程序.我有一个名为"Status_label"的标签MainWindow.xaml.我想从不同的类(signIn.cs)更改其内容.通常我能做到这一点
var mainWin = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MainWindow) as MainWindow;
mainWin.status_lable.Content = "Irantha signed in";
Run Code Online (Sandbox Code Playgroud)
但我的问题是,当我试图通过signIn.cs类中的不同线程访问它时,它会给出一个错误:
The calling thread cannot access this object because a different thread owns it.
Run Code Online (Sandbox Code Playgroud)
我可以通过使用Dispatcher.Invoke(new Action(() =>{..........或其他方式解决这个问题吗?
编辑: 我将从不同的类调用此标签更改操作 - 以及单独的线程
MainWindow.xaml
<Label HorizontalAlignment="Left" Margin="14,312,0,0" Name="status_lable" Width="361"/>
Run Code Online (Sandbox Code Playgroud)
SignIn.cs
internal void getStudentAttendence()
{
Thread captureFingerPrints = new Thread(startCapturing);
captureFingerPrints.Start();
}
void mySeparateThreadMethod()
{
var mainWin = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MainWindow) as MainWindow;
mainWin.status_lable.Dispatcher.Invoke(new Action(()=> mainWin.status_lable.Content ="Irantha signed in"));
}
Run Code Online (Sandbox Code Playgroud)
line …
我在主窗口中有一个背景图像,这样当我翻转视图时,它不是一个空白的白色屏幕,而是一个图像.我的问题是,当设备旋转时,此图像不会旋转.
编辑:据我所知,当他指出我必须在这种情况下手动旋转背景图像时,Brett是正确的.如果它将来帮助其他人,这就是我如何旋转它.
内部myAppDelegate:
- (void) application:(UIApplication *)application
willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation
duration:(NSTimeInterval)duration
{
if (newStatusBarOrientation == UIInterfaceOrientationPortrait)
self.bgImage.transform = CGAffineTransformIdentity;
else if (newStatusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)
self.bgImage.transform = CGAffineTransformMakeRotation(-M_PI);
else if (UIInterfaceOrientationIsLandscape(newStatusBarOrientation))
{
float rotate = ((newStatusBarOrientation == UIInterfaceOrientationLandscapeLeft) ? -1:1) * (M_PI / 2.0);
self.bgImage.transform = CGAffineTransformMakeRotation(rotate);
self.bgImage.transform = CGAffineTransformTranslate(self.bgImage.transform, 0, -self.bgImage.frame.origin.y);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个简单的Cocoa应用程序,只有一个NSWindow,我可以输入一些凭据,在提交后,应用程序启动另一个进程.如果凭证输入一次并缓存,我想通过运行应用程序而不显示应用程序的主窗口来启动该过程.我怎样才能做到这一点?
该应用程序只有一个符合NSApplicationDelegate和一个.xib文件的类.
我正在创建我的第一个 WinUI 3 桌面应用程序。我的主窗口上有一个导航视图。我通过 NavigationView 中的框架导航到 9 个不同的页面。其中一页用于打印报告。我需要让 FileSavePicker 从“reportPage”工作。我直接按照 learn.microsoft.com 的示例实现了以下内容。(我还在下面的一个小型虚拟 winui-3 沙箱测试应用程序中添加了相同的 FileSavePicker 代码段,但我将代码放在 MainWindow 的代码隐藏中,并且它工作得很好。)我需要让 FileSavePicker 工作页面而不是主窗口。感谢大家迄今为止的帮助。
我收到此调试错误:
我知道问题与获取 MainWindow 的 HWND 有关。
// Retrieve the window handle (HWND) of the current WinUI 3 window.
var window = (MainWindow)Application.Current.MainWindow; (I tried this, but it did not work)
Run Code Online (Sandbox Code Playgroud)
(我尝试过这个,但没有成功)
var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(window);
Run Code Online (Sandbox Code Playgroud)
我从上面的行得到这个错误:
我不知道正确的语法。
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using System;
using System.Collections.Generic;
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Storage.Provider;
namespace MetricReporting.Pages
{
/// <summary>
/// An empty …Run Code Online (Sandbox Code Playgroud) 我试图实现重叠主窗口边界与控件的效果.很难用文字解释这一点,这也可能是为什么我很难找到有关如何做到这一点的信息,或者甚至是否可能.
下面是我试图获得的效果的一个示例(来自设计者),其中"note"对象浮动在主窗口的边界之外.

然而,我在运行时获得的效果是这个(下面),内部控件被主窗口的边界剪切.

有人可以告诉我这是否可能(如果可能),如果可能是一些关于我如何能够获得这种效果的建议.