- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
I'm posting this in Q&A style as there are currently a few posts on S/O with similar questions and answers that aren't perfectly correct for all use cases. They typically suffice OP's one specific use case but are bad for people coming to the site searching for a general-use answer and lead to hours of frustrated debugging, as I just experienced. (And in doing so scourged through all of StackOverflow's resources to find that this question (and its answer) had not been officially asked anywhere except in comments on other posts).
虽然有许多微小的片段允许这样做,但它们会以各种无法预料的方式失败。
Ví dụ:
1) 您可以旋转屏幕 UI(不是设备方向),但是如果您截屏或显示 iOS 原生内容(例如弹出警报),它们将以错误的方式定向。
2) 如果您将 orientation
键设置为所需的方向,UI 并不总是会在之后(或根本不会)自动更新。
3) 如果您只是手动执行此操作并手动更新 UI,其他 VC 可能仍会篡改方向,它不会“锁定”。
4) 如果您手动更新设备方向并刷新 UI,添加新的 ViewController.view 将翻转宽度和高度,因为设备设置尚未更新,即使 UI 已更新,您也必须等待未知的时间在更新这些属性(UIDevice 的维度)之前完成旋转动画的时间(0 到 1 秒之间)。
vân vân.
我在下面的回答解决了在搜索各种 SO 线程时发现的所有潜在问题。
1 Câu trả lời
添加到 AppDelegate.h
@property () BOOL landscape;
添加到 AppDelegate.m
-(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if (self.landscape) {
return UIInterfaceOrientationMaskLandscapeRight;
} khác {
return UIInterfaceOrientationMaskPortrait;
}
}
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
if (self.landscape) {
return UIInterfaceOrientationLandscapeRight;
} khác {
return UIInterfaceOrientationPortrait;
}
}
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if (self.landscape) {
return (UIInterfaceOrientationLandscapeRight);
} khác {
return (UIInterfaceOrientationPortrait);
}
}
-(NSUInteger)supportedInterfaceOrientations {
if (self.landscape) {
return UIInterfaceOrientationLandscapeRight;
} khác {
return UIInterfaceOrientationPortrait;
}
}
-(BOOL)shouldAutorotate {
return NO;
}
添加到你的VC.m
-(void)setLandscape:(BOOL)landscape {
AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.landscape = landscape;
if (landscape) {
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
} khác {
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
}
[UINavigationController attemptRotationToDeviceOrientation];//THIS IS THE MOST IMPORTANT LINE IN HERE AND EVERYONE AND ALL SAMPLE CODE LEAVES IT OUT FOR SOME REASON, DO NOT REMOVE THIS LINE. (Forces UI to update), otherwise this orientation change will randomly fail around 1% of the time as UI doesn't refresh for various unknown reasons.
}
最重要的一行是 [UINavigationController attemptRotationToDeviceOrientation];
由于某种原因,网络上的每个人、stackoverflow、示例代码等都遗漏了它。只需设置 orientation
键将导致它在 98% 的时间内工作,但随机 UI 不会更新或者它会在设置键之前更新并且你会遇到方向错误,这会强制它更新当你需要的时候。
关于ios - 问答 - 如何强制设备方向在横向和纵向之间旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49269499/
Làm thế nào để thiết bị IO biết giá trị trong bộ nhớ thuộc về nó đã thay đổi trong bộ nhớ được ánh xạ IO? ? Ví dụ, giả sử địa chỉ bộ nhớ 0 được dành riêng để lưu trữ màu nền cho thiết bị VGA. Khi chúng ta thay đổi giá trị trong bộ nhớ [0], VGA
Hiện tại tôi đang phát triển một ứng dụng iOS sử dụng SDK Facebook để đăng nhập (thông qua FBLoginView). Mọi thứ đều hoạt động tốt, ngoại trừ những người sử dụng phiên bản Facebook cũ. Khi họ nhấn nút "Đăng nhập bằng Facebook", anh ấy
Giả sử tôi có: đây - là một - ví dụ - với một số - dấu gạch ngang NSRange sẽ chọn trường hợp đầu tiên của "-" bằng cách sử dụng `rangeOfString:@"-", nhưng nếu tôi chỉ muốn trường hợp cuối cùng
SDK Card.io cung cấp các thông tin chi tiết sau: Số thẻ, Ngày hết hạn, Tháng, Năm, CVV và Mã bưu chính. Làm thế nào để lấy tên quốc gia từ SDK này. - (void)userDidProvideCreditCardInfo:(Xe hơi
Ứng dụng iOS tải xuống hình ảnh từ dịch vụ web và cài đặt chúng vào thiết bị iOS của người dùng trong quá trình cài đặt như thế nào? Có thể được không? Câu trả lời hay nhất Bạn không kiểm soát được việc cài đặt ứng dụng của mình trên thiết bị của người dùng, do đó bạn không thể tải xuống dữ liệu bổ sung trong quá trình cài đặt. Chỉ cần khởi động ứng dụng lần đầu tiên sau khi cài đặt
Tôi đã từng phát triển một sản phẩm iOS dành cho doanh nghiệp mà công ty tôi bán cho các doanh nghiệp lớn để nhân viên của họ sử dụng. Ứng dụng được cung cấp thông qua AppStore và người dùng doanh nghiệp được cung cấp hồ sơ cung cấp dành riêng cho công ty (có chứa hồ sơ cung cấp ứng dụng) để kích hoạt các ứng dụng mà họ được phép sử dụng.
Tôi đang cố gắng tích hợp Card.io SDK vào ứng dụng iOS của mình. Tôi muốn thực hiện một bản địa hóa đơn giản cho giao diện người dùng CardIO, như thay đổi tiêu đề nút hủy hoặc văn bản gợi ý "Đặt trước thẻ tín dụng của bạn tại đây". Tôi tìm thấy cái này trên github
Tôi đang sử dụng các lớp CardIOView và CardIOViewDelegate và không có BOOL nào có thể được đặt thành YES để quét collectCardholderName. Tôi có thể thấy nó trong CardIOP
Tôi có một ứng dụng VoIP được tích hợp bộ công cụ gọi điện. Mỗi lần tôi gọi từ ứng dụng VoIP, một bản ghi cuộc gọi gần đây mới sẽ được tạo trong ứng dụng điện thoại gốc. Tôi cũng có danh bạ tùy chỉnh trong ứng dụng voip của mình (ứng dụng điện thoại
Làm sao ứng dụng iOS biết được đã có bàn phím trên màn hình khi ứng dụng mở ra? Khi ứng dụng đang chạy, nó có thể nhận được thông báo hiện/ẩn bàn phím. Tuy nhiên, nếu ứng dụng được mở như một ứng dụng phụ ở chế độ chia đôi màn hình và ứng dụng chính đã hiển thị bàn phím, thì ứng dụng phụ không
Tôi nhận được lỗi sau trong trình mô phỏng: ImageIO: CGImageReadSessionGetCachedImageBlockData *** CGImageReadSessionGetCachedIm
Như được trình bày trong tài liệu của Apple, có thể giao tiếp với các phụ kiện được chứng nhận (do Apple chứng nhận) thông qua EAAccessory Framework. Nhưng tôi hơi bối rối vì một số bài đăng nói với tôi rằng nó cũng có thể được thực hiện thông qua CoreBluetoo
Mặc dù trình gỡ lỗi hiện nay khá tốt, nhưng đôi khi cách tốt nhất để tìm hiểu những gì đang diễn ra trong ứng dụng của bạn vẫn là sử dụng NSLog. Thật dễ dàng để thực hiện việc này khi bạn kết nối với máy tính; Xcode sẽ hữu ích khi hiển thị bảng xem nhật ký và bạn chỉ cần làm theo hướng dẫn. Khi bạn không làm việc
Trong ứng dụng iOS của mình, tôi đã xác định một số điểm quan tâm. Một số trong số chúng có tên Beacon Kontakt.io được liên kết với một PoI cụ thể (ý tôi là tên thường được gắn vào nhãn beacon). Bây giờ tôi muốn tìm đèn hiệu ở gần đó.
Tôi đang tạo một plugin trigger.io cho thông báo cảnh báo. Thử trả về dữ liệu từ lời nhắc cảnh báo. Đây là mã của tôi: // Prompt + (void)show_prompt:(ForgeTask*)task{
Xin chào, tôi mới sử dụng Apple iOS. Tôi đã đọc và tìm kiếm rất nhiều bài viết về thông báo đẩy nhưng không tìm thấy thông tin nào về bản cập nhật mới của APNS từ io4 lên ios 6. Có ai có thể cung cấp cho tôi cách sử dụng APNS trong ios không?
Chiều cao của UITabBar có vẻ đã thay đổi giữa iOS 7 và 8/9/10/11. Tôi đăng câu hỏi này để mọi người có thể dễ dàng tìm thấy câu trả lời. Trước đây: iOS 8/9/10/11 trên iPhone và iPad
Tôi đoán tôi có thể sử dụng nhiều Storyboard khác nhau cho các phiên bản iOS khác nhau. Do sự khác biệt trong UI, tôi sẽ tạo các Storyboard sau: Main_iPhone.storyboard Main_iPad.storyboard
Tôi đang viết một thứ mà tôi sẽ chồng một sự kết hợp của 2 video với một phần các bản âm thanh từ thư viện iTunes của thiết bị, như thế này: AVMutableComposition* mixComposition = [[AVMutableC
Tôi đã tạo một ứng dụng iOS đơn giản có thể biên dịch và chạy tốt trên trình mô phỏng iPad. Chương trình tương tự không biên dịch được khi tôi yêu cầu XCode 4 sử dụng thiết bị iPad đã kết nối của tôi. Vấn đề có vẻ như là khi tôi cố gắng sử dụng một chiếc iPad được kết nối
Tôi là một lập trình viên xuất sắc, rất giỏi!