我想用UIBezierPath制作这个UIView:
有可选的旋转功能(虽然如果我知道如何绘制旭日(我称之为视图),我可以自己制作)
答案在目标C中给出:https://stackoverflow.com/a/14991292/7715250
我尝试使用此代码在Swift中转换它(Playground中的复制粘贴将起作用):
import UIKit
class SunBurst: UIView{
override func draw(_ rect: CGRect) {
let radius: CGFloat = rect.size.width / 2.0
UIColor.red.setFill()
UIColor.blue.setStroke()
let bezierPath = UIBezierPath()
let centerPoint = CGPoint(x: rect.origin.x + radius, y: rect.origin.y + radius)
var thisPoint = CGPoint(x: centerPoint.x + radius, y: centerPoint.y)
bezierPath.move(to: centerPoint)
var thisAngle: CGFloat = 0.0
let sliceDegrees: CGFloat = 360.0 / 20 / 2.0
let half: CGFloat = 180
let floatRadius = Float(radius)
for _ in 0..<20 …Run Code Online (Sandbox Code Playgroud) 我正在修改UIView高度的约束,包括nameTextField和使用SnapKit的superView inputContainerView.我安排nameTextField的高度等于inputContainerView的高度的三分之一.我的目的是在按下SegmentedControl时删除nameTextField.当我尝试修改常量时,它工作得很好.但是当我尝试将乘数高度值从(1/3)修改为0时,有时它会崩溃,有时我写的其他textField(passwordTextField和emailTextField)也会消失.我正在使用updateContraint来更新一些约束.我该如何解决这个问题?谢谢
inputContainerView.snp.makeConstraints { (make) in
make.centerX.equalTo(view.snp.centerX)
make.centerY.equalTo(view.snp.centerY)
// constraintAnchor is equal to offset
make.width.equalTo(view.snp.width).offset(-24)
make.height.equalTo(150)
}
// constraint for nameTextField
inputContainerView.addSubview(nameTextField)
//x y width height constraint using Snap Kit
nameTextField.snp.makeConstraints { (make) in
make.left.equalTo(inputContainerView.snp.left).offset(12)
make.top.equalTo(inputContainerView.snp.top)
make.width.equalTo(inputContainerView.snp.width)
make.height.equalTo(inputContainerView.snp.height).multipliedBy(0.333)
}
func handleLoginRegisterChange() {
let title = loginRegisterSegmentedControl.titleForSegment(at: loginRegisterSegmentedControl.selectedSegmentIndex)
loginRegisterButton.setTitle(title, for: .normal)
// change height of inputcontainerview
if loginRegisterSegmentedControl.selectedSegmentIndex == 0 {
inputContainerView.snp.updateConstraints({ (update) in
update.height.equalTo(100)
})
nameTextField.snp.remakeConstraints({ (remake) in
remake.height.equalTo(inputContainerView.snp.height).multipliedBy(0)
})
} else if loginRegisterSegmentedControl.selectedSegmentIndex == 1 {
inputContainerView.snp.updateConstraints({ (update) in …Run Code Online (Sandbox Code Playgroud) 以下是我尝试根据Apple WWDC重复但使用自动布局的代码:
extension AugmentedReallityViewController {
@objc func handlePan(recognizer: UIPanGestureRecognizer) {
// // hide languages and units anyway
// moveUnitView(show: false)
// moveLanguageView(show: false)
//
// let isNowExpanded = settingsPanelState == SettingsPanelState.expanded
// let newState = isNowExpanded ? SettingsPanelState.collapsed : SettingsPanelState.expanded
//
// switch recognizer.state {
// case .began:
// startInteractiveTransition(state: newState, duration: 1)
// isLastPanelUpdateToReachTheNewState = true // just in case, but we should change this property later
// case .changed:
// let translation = recognizer.translation(in: viewSettings)
// let fractionComplete …Run Code Online (Sandbox Code Playgroud) 我想在UIViews和UIImageViews上实现这个效果:
在UIView上,我知道我可以用不同的颜色在其中放置2,但我认为必须有更好的方法,我不知道如何在UIImageVIew中做到这一点.某种pod会非常有用,因为我找不到它.
我想知道更新视图/约束的最佳实践,以获得具有多个可能(可见)子视图的动态视图.在这个简单的例子中,假设我想要一个可能有两个"状态" 的自定义 UITableViewCell,一个带有标题和一个正文标签,另一个只带有正文标签,如下图所示.重要提示:我不是在寻找创建这两种状态的方法,这只是一个例子.我知道有一个常规单元subtitle可以达到这个目的,但我真正的问题是更复杂.
第一州:
第二州:
一种选择是创建这两个单元作为独立的单元,但我想看看是否有任何"接受"的方式,使单个细胞(第一个),并让它在各种状态显示-最好是不用处理一个大量的程序化国家.
首先,我假设两个标签都必须限制在细胞本身的顶部边缘.如果我不这样做,两个国家都不可能,对吧?或者是否有另一种方法从第一个视图获得第二个状态?
应该如何设置约束,以及如何在代码中处理它们 - 以实现具有不同布局的单个视图?
我有一个视图(在我的情况下为MGLMapview:mapboxView),该视图显示在我的第一个VC中。我希望我的第二个VC显示相同的视图。
所以从VC1到VC2我做到了:
self.VC2.mapView = self.mapView
self.navigationController?.pushViewController(self.VC2, animated: true)
Run Code Online (Sandbox Code Playgroud)
然后在VC2的viewDidLoad中:
view.addSubview(mapView)
Run Code Online (Sandbox Code Playgroud)
我的问题是什么也没出现。但是,当我在第二个VC中打印mapView的大小和高度时,它不为零。
我想念什么吗?
感谢您的帮助
我如何设计一个UIView,其所有4个角均具有不同的角半径。因此,UIView的右上角半径为20,左上角半径为30,左下角半径为10,右下角半径为20
我想向图像所示的Viw容器添加不同的cornerRadius。使用UIBEZIER方法会切断共享评论和喜欢的部分。viw容器固定在单元格上
所以我在Xcode中有一个基本的游戏。我从Xcode的基本游戏模板开始,然后主要在“ GameScene.swift”内部构建游戏。当我完成游戏时,我想添加一个带有播放按钮的开始屏幕,因此我制作了一个新的UIViewController并添加了一个按钮。我控制单击并将按钮拖动到GameViewController并创建一个Modal Segue。然后,我希望游戏在玩家死亡时返回。我尝试了各种方法来消除这种观点,但是没有一种有效。我是新手,确实需要帮助。让我知道查找解决方案所需的代码/信息。我已经尝试了在互联网上找到的所有内容。我以为我找到了解决方法,在GameViewController的菜单上添加了一个按钮和Segue,但是多次按下后,它阻塞了系统,并且由于没有被解雇而变慢了爬行速度。
在GameViewController类的GameViewController.swift内部,我尝试制作一个在游戏结束时调用的函数。我试图同时弹出和关闭视图控制器。调用了该函数,并在控制台上打印了一行,但视图仍然存在。打印到控制台的唯一内容是“ nil”
class GameViewController: UIViewController {
func end(){
print(navigationController?.viewControllers as Any)
self.navigationController?.popViewController(animated: true)
self.dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我UIWebView有一套作为视图ViewController。我想SVProgressHUD在网页加载时显示活动指示器,然后在完成时将其关闭,但似乎无法正常工作。网页加载正常,但是该指示器从不显示。我知道SVProgressHUD设置正确且功能正确,但我所拥有的功能却不正确。
我相信,因为我UIWebView实际上没有在IB的场景中,而是ViewController将视图设置为UIWebView,我正在使用的代码无法将其定位。如果我错了,请纠正我。
这是我的代码:
import UIKit
import SVProgressHUD
class ViewController: UIViewController, UIWebViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
if let url = URL(string: "https://www.google.com") {
let webView = UIWebView(frame: self.view.frame)
let urlRequest = URLRequest(url: url)
webView.loadRequest(urlRequest as URLRequest)
webView.scalesPageToFit = true;
webView.scrollView.showsHorizontalScrollIndicator = false;
webView.scrollView.showsVerticalScrollIndicator = false;
self.view.addSubview(webView)
}
}
func webViewDidStartLoad(_ webView: UIWebView) {
SVProgressHUD.show()
}
func webViewDidFinishLoad(_ webView: UIWebView) {
SVProgressHUD.dismiss()
}
func webView(_ webView: …Run Code Online (Sandbox Code Playgroud) uiview ×10
ios ×9
swift ×8
constraints ×1
iphone ×1
mapbox ×1
objective-c ×1
snapkit ×1
uibezierpath ×1
uiimageview ×1
uikit ×1
uiwebview ×1
xcode ×1