我正在尝试将imageview的帧设置为图像的原始大小,并将其显示在视图的中心.我为此编写了以下代码,但图像仍然出现在整个屏幕上!假设图像大小为320x88,它显示调整大小/拉伸到320x460!我希望它出现在屏幕的中心,所以我将Y坐标设置为(460-88)/ 2,但它不起作用.有谁可以帮我解决这个问题.谢谢.
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:filePath]];
if(imageView.image.size.width == IPHONE4_RES_WIDTH)
[imageView setFrame: CGRectMake(0, 0, imageView.image.size.width/2, imageView.image.size.height/2)];
UIViewController *viewController = [[[UIViewController alloc] init] autorelease];
viewController.view.backgroundColor = [UIColor blackColor];
NSLog(@"%f : %f",viewController.view.bounds.size.height, imageView.bounds.size.height);
viewController.view = imageView;
viewController.view.contentMode = UIViewContentModeCenter;
[self.navigationController pushViewController:viewController animated:YES];
Run Code Online (Sandbox Code Playgroud) 当我试图运行我正在构建的iPhone应用程序时,构建成功但应用程序在启动图像后崩溃,并给出了一个如下所示的错误:
2011-04-06 20:31:38.562我的应用程序[3438:207] *由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:' - [UIViewController _loadViewFromNibNamed:bundle:]加载了"GalleryView"笔尖,但视图出口是没有设置.'
我无法弄清楚这里发生了什么..请帮忙!
每当我尝试切换这样的视图时,我收到以下错误:
-(void)changeView1ToView4 {
[self.navigationController1 pushViewController:view4 animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
当应用程序首次加载并且用户直接进入此视图时,不会发生这种情况.只有当我转到其他视图,回到主菜单,然后尝试转到此视图时,才会发生此崩溃.
此外,如果你不确定,我正在使用UINavigationController.此代码也在app委托中,我从具有父视图的视图控制器调用它,所以我使用.reference来调用它:
[self.reference changeView1ToView4];
Run Code Online (Sandbox Code Playgroud)
有没有真正的方法来解决这个问题?
谢谢!
EDIT1:
[self.navigationController1 pushViewController:view4 animated:NO];
[self.navigationController1 pushViewController:view4 animated:YES];
I tried that and got this crash message in the console:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing the same view controller instance more than once is not supported (<View2: 0x18d540>)'
Run Code Online (Sandbox Code Playgroud) 我找到了这个关于'使用UISegmentedControl切换视图'的示例代码.
http://redartisan.com/blog?page=2
(示例代码链接:http://github.com/crafterm/SegmentedControlRevisited)
但是此示例代码使用的是xib.我想用故事板重新编码(没有xib).是否有类似的示例代码?
首先,这不是重复.我在SO上查看了与此相关的所有问题,但这些问题对我来说都不起作用.希望这只是因为我是iOS开发的新手,但我怀疑在我的情况下这是不可能的.我附加了一个带有视图控制器的图片,我想要禁用旋转.
我已经尝试过:对我要禁用旋转的视图控制器进行子类化,并shouldAutoRotate通过将其设置为NO 来使用该方法.显然这不起作用,因为它是导航控制器,指示其视图控制器是否可以旋转.所以,我UINavigationController在故事板中继承并使用了这个类而不是默认的导航控制器.在这堂课中,我已经设定shouldAutoRotate为NO.它仍然无法正常工作.真的不知道我做错了什么.
当我使用shouldAutoRotate设置为NO的视图控制器类扩展根视图控制器时,它会禁用整个应用程序的旋转.... 这不是我想要的.我只希望为图片中圈出的视图控制器禁用旋转.

提前致谢!
rotation uinavigationcontroller viewcontroller navigationcontroller ios
我试图打开基于notification点击的不同视图控制器,但是当push notification它被接收时它会自动在后台运行控制器代码,所以当我通过应用程序图标/通知打开应用程序时notification centre,view controller立即加载,但是当收到多个通知时,它会加载第一个通知控制器无论采用哪种通知.
假设我已收到标题为"晚上","早晨"和"夜晚"的通知,当点击"晚上"通知时它应打开"晚间视图控制器",但当我回去加载时它会加载"夜视控制器" "早晨视图控制器",最后加载"晚视图控制器".在通知发出之前,我在主控制器上,然后我将应用程序移至后台.
当我点击"早晨"时,notification它现在什么都不做.
之前我尝试过使用addObserver,但结果是一样的,所以我转到app delegate.
这是app委托代码
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[UIApplication sharedApplication]setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
// Override point for customization after application launch.
// Register for Push Notitications, if running iOS 8 or More
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert |
UIUserNotificationTypeBadge |
UIUserNotificationTypeSound);
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes categories:nil];
[application registerUserNotificationSettings:settings];
[application registerForRemoteNotifications];
} else {
// Register …Run Code Online (Sandbox Code Playgroud) notifications objective-c viewcontroller ios notificationcenter
什么 Swift 代码会将应用程序切换到全屏模式?我找到了 IOS 示例代码的参考资料。我正在寻找适用于 MacOS 应用程序的代码。
我正在创建我的第一个简单的预算应用程序.基本上,我采取一些用户输入,如月收入和储蓄目标.然后他们点击"开始",该应用程序计算诸如他们的每日预算等内容.
我遇到了麻烦.在完成所有计算之后,我会显示"你每天可以花多少钱"(例如每天20美元),然后通过原始屏幕上的原始输入传递segue.
现在,在这个VC(UserInfoVC)中我创建了一个按钮,让他们可以添加今天花了多少钱.因此,当他们点击这个"花钱"按钮时,我打开一个新的VC(AddSubtractMoney),在那里我会提供一个计算器,在那里他们可以输入他们今天花了多少钱(即12美元)并点击提交.
我将他们的输入与每日预算相比较,以获得新的每日预算.
现在,我无法向后传递这个更新的数字,将其显示在标签"dailySpendingLimitLabel"上的前一个VC上.我知道segues不是向后传递数据的最佳方式.
我已经尝试过闭包,但我最终迷失在语法,协议和代理中(这是我的第二个月编码).
有没有一种简单的方法可以将这些数据传回上一个VC并填充前一个显示标签中的数据?
下面是代码.
第一个片段来自UserInfoVC,我在其中显示我最初输入的数据.第二个片段来自AddSubtractMoney我放置计算器的类,并在函数内创建了一个对象"newestUpdate",允许我计算他们在计算器上输入的数字减去旧的每日预算.为了得到一个新的预算,我想向后呈现UserInfoVC.
class UserInfoViewController : ViewController {
var userNamePassedOver : String?
var userDailyBudgetPassedOver : Double = 99.0
var userDailySavingsPassedOver : Double = 778.00
var userMonthlyEarningsPassedOver : Double?
var userDesiredSavingsPassedOver : Double?
var newAmountPassedBack : Double = 0.0
@IBOutlet weak var dailySavingsNumberLabel: UILabel!
@IBOutlet weak var userNameLabel: UILabel!
@IBOutlet weak var dailySpendingLimitLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
userNameLabel.text = userNamePassedOver
dailySpendingLimitLabel.text = String(format: "%.2f", userDailyBudgetPassedOver) …Run Code Online (Sandbox Code Playgroud) 介绍:
我想创建一个在首次启动时显示一些“用户指南”的应用程序,我已经完成了检测该应用程序是否首次启动的部分,但是当涉及到设置视图控制器部分时,我无法确定怎么做。
现在的情况:
我已经进行了很多研究,并且看到了很多有关“如何以编程方式快速设置初始视图控制器”这样的主题的Q / A文章,但是基本上所有这些文章都是以ios开发为例的,它们都没有UIWindow或UINavigationController(rootViewController:)在OSX开发中匹配。然后我发现它似乎没有这样的事情didFinishLaunchingWithOptions中AppDelegate.swift的文件,相反,这里只有一个applicationDidFinishLaunching(_ aNotification: Notification)。
题:
我已经取消选中Is Initial Controller两个View Controller 的选项,并且它们都具有Storyboard ID(标识符?)和它们自己的指定类。
MainPageController

UserGuidePageController

还是我也应该指定并标识我的窗口控制器?因为我不知道该如何使用窗口控制器。
为了在其中设置应用程序的初始视图控制器,我需要做什么AppDelegate?
PS这是我的界面视图的图片:
故事板界面

AppDelegate.swift
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
let storyboard = NSStoryboard(name: NSStoryboard.Name("Main"), bundle: Bundle.main)
var window = MainWindow().window
func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) - > Bool {
return true
}
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Insert code here to initialize your application
let …Run Code Online (Sandbox Code Playgroud)我已经到处寻找这个问题的答案,但似乎找不到。如何从 swiftUI 调用 viewController 方法(例如单击按钮)?
我有一个看起来像这样的视图控制器:
import Player
class PlayerViewController: UIViewController {
var player = Player()
func play() {
self.player.play()
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个看起来像这样的包装:
import SwiftUI
import AVFoundation
struct ProjectEditorPlayerBridge: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> PlayerViewController {
let player = PlayerViewController()
return player
}
func updateUIViewController(_ uiViewController: PlayerViewController, context: Context) {
}
typealias UIViewControllerType = PlayerViewController
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在 swiftUI 中使用按钮操作并调用 viewControllerplay方法一次。我已经看到建议在包装器上设置状态/绑定并调用 updateUIViewController 中的方法的答案,但是当我这样做时,我看到它被调用多次,而不仅仅是一次。
viewcontroller ×10
ios ×5
iphone ×2
macos ×2
cocoa ×1
crash ×1
nib ×1
objective-c ×1
rotation ×1
segue ×1
storyboard ×1
swift ×1
swift2 ×1
swift4 ×1
swiftui ×1
uiimageview ×1
view ×1
xcode ×1
xcode10 ×1