我知道不可能.scaledToFit()在帧为 120 和 430 的图像上使用修改器,使用像这样的帧修改器.frame(height: 100, width: 100)并期望图像以某种方式保持宽高比并适合宽度 100 和高度 100 的帧。
因此,解决这个问题的唯一方法似乎是强制用户在使用图像选择器上传图像时将其图像裁剪成正方形。这在 SwiftUI 中可能吗/我在这里缺少什么吗?
谢谢
uiimageview uiimagepickercontroller swiftui uiimagepicker react-image-crop
我刚刚开始使用 Firebase,并注意到有很多教程/文档指示您将以下内容放入数据库规则中:
{
"rules": {
"$uid": {
".write": "$uid === auth.uid",
".read": "$uid === auth.uid"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,似乎有此代码的新版本,第 2 版。我想知道上面的代码是否已过时且版本 1(我猜)本质上等同于此代码:
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
来自 google firebase docs ( https://firebase.google.com/docs/firestore/security/get-started )
谢谢
security rules firebase firebase-security firebase-realtime-database
我正在 SwiftUI 中开发一个项目,并有一个 forEach 循环,如下所示:
ForEach(self.items, id: \.self) { item in
Text(item)
.padding(4)
}
Run Code Online (Sandbox Code Playgroud)
当我更新self.itemsForEach 视图时,它也会强制滚动位置回到最顶部。有没有办法让 ForEach 视图更新并添加项目而不更改用户当前所在的滚动位置?
任何有关此事的帮助将不胜感激。另外,我更喜欢非 iOS 14 方法,因为我正在开发一个即将发布的应用程序,并且不期望它与 iOS 14 兼容。
我刚得到Xcode,并尝试遵循在线教程,但是在每个单独的教程中,当制作一个新项目(单个活动)应用程序时,该项目附带2个文件,而这些文件我在默认情况下根本没有!我无法弄清楚如何在创建项目时默认制作main.storyboard或ViewController.swift文件。
我仅有的文件是AppDelegate.swift,SceneDelegate.swift和ContentView.swift。我也有Assets.xcassets,LaunchScreen.storyboard,Info.plist,Preview Content目录和Products目录。
这是新更新的一部分吗?还是有某种方法可以让我在初始化时创建这两个文件?
我尝试重新安装,并制作了多个新项目-每次它们都缺少这2个关键文件,因此将不胜感激。
如果水平堆栈中有 3 个项目,我想我可以这样做:
HStack{
Text("test")
Spacer()
item2()
Spacer()
Text("test")
}
Run Code Online (Sandbox Code Playgroud)
将 item2() 置于两个文本视图之间的中心。然而,这样做的问题是 item2() 不一定总是居中,因为,可以说 Text("test") 更改为 Text("a") 或其他内容。这会导致问题,并且第二个项目并不总是位于屏幕中央。
我怎样才能使 item2() 始终居中?
谢谢
我正在 SwiftUI 中制作一个应用程序,但我不希望用户能够旋转屏幕并能够以横向模式查看该应用程序。我怎样才能做到这一点?
谢谢。
我正在使用 SwiftUI,并且有一个起始页面。当用户按下该页面上的按钮时,会弹出一个模式表。
在模式表旁边,我有一些如下代码:
NavigationLink(destination: NextView(), tag: 2, selection: $tag) {
EmptyView()
}
Run Code Online (Sandbox Code Playgroud)
我的模态工作表视图包含在导航视图内。
当 tag 的值变为 2 时,视图确实会转到 NextView(),但它也呈现为用户可以向下滑动的模式表,而我不希望这样。
我想从模式表转换为常规视图。
这可能吗?我尝试过隐藏导航栏等,但似乎没有什么区别。
任何有关此事的帮助将不胜感激。
截至今天,GitHub 似乎已通过命令行禁用密码,而是需要个人访问令牌,因为在尝试推送提交时出现此错误: "remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead."
我去生成了一个个人访问令牌,但我看过的大多数教程都说你基本上应该再次重新克隆 repo,然后在你再次提交之前使用你的个人访问令牌“登录”。
但是,我有很多使用旧密码方法的存储库,我不想重新克隆每一个。有没有办法在我当前的存储库中以某种方式告诉 Git,“嘿,我想更改登录密码”。我希望当我推送时我会自动再次提示我输入密码,但我只是收到了上面的错误消息,我不知道如何在不重新克隆和尝试推送的情况下重新输入我的登录信息再次。
我试过了,git config --global --unset user.password但这似乎没有解决问题。
谢谢
我有以下片段类:
public class fragment1 extends Fragment {
private TextView bunz_count;
private TextView money_count;
private Bunz bunz;
private Handler handler;
int delay = 1000;
View view;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
bunz = Bunz.getInstance();
handler = new Handler();
view = inflater.inflate(R.layout.fragment1, container, false);
handler.postDelayed(new Runnable(){
public void run(){
update(view);
handler.postDelayed(this, delay);
}
}, delay);
return view;
}
public void update(View view){
bunz_count = (TextView) view.findViewById(R.id.final_bunz_count);
money_count = (TextView) view.findViewById(R.id.final_money_count);
//System.out.println(bunz.getBaker1());
BigDecimal number …Run Code Online (Sandbox Code Playgroud) java android android-fragments android-studio android-threading
我知道 Firebase getDocument 调用是异步的,所以我试图找出如何本质上等待调用完成执行,然后继续执行其他操作。
我尝试过使用 DispatchGroup() 并进入/离开组,但我似乎无法让它正常工作。我有类似以下内容:
let myGroup = DispatchGroup()
let usersRef = self.db.collection("Users").document("Users").collection("Users")
if self.testCondition == false {
self.errorMessage = "error"
} else{
usersRef.getDocuments {(snap, err) in
myGroup.enter()
//basically getting every username
for document in snap!.documents{
let user = document["username"] as! String
let userRef = usersRef.document(user)
userRef.getDocument { (snapshot, err) in
if err != nil {
print(err)
} else {
let sample = snapshot!["sample"] as! String
if sample == 'bad' {
self.errorMessage = "error"
}
}
}
} …Run Code Online (Sandbox Code Playgroud) 如果我有一个 SwiftUI 视图,并将其放入后台(即在 iPhone 上按一次主页按钮),然后再次重新打开它,我想触发一些操作。
我的第一个想法是利用
.onAppear{}
Run Code Online (Sandbox Code Playgroud)
修饰符,但是,经过一些测试,这不适用于在后台后进入前台的视图。
似乎没有与 UIKit ViewWillAppear 等效的 SwiftUI。
我在想也许场景委托在这里有用,因为它确实提供了以下功能:
func sceneWillEnterForeground(_ scene: UIScene) {
// Called as the scene transitions from the background to the foreground.
// Use this method to undo the changes made on entering the background.
}
Run Code Online (Sandbox Code Playgroud)
但我不确定是否有一种有效的方法来使用此函数在视图从后台进入前台时触发视图中的操作。
任何对此的想法将不胜感激。
swiftui ×7
swift ×6
ios ×4
firebase ×2
android ×1
centering ×1
dispatch ×1
foreach ×1
git ×1
github ×1
hstack ×1
java ×1
rules ×1
scrollview ×1
security ×1
storyboard ×1
uiimageview ×1
uiscrollview ×1
vstack ×1
xcode ×1