小编day*_*m3r的帖子

无法在UICollectionView(iOS)上更改背景颜色

我正在编写我的第一个iOS应用程序,并且我在更改UICollectionView的backgroundColor时遇到了一些问题.

该应用程序具有导航控制器和某些视图.最初,我能够更改AppDelegate实现文件中的颜色:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];

        feedsList = [[FeedsListTVC alloc] init];

        rootNC = [[RootNC alloc] init];
        rootNC.viewControllers = [NSMutableArray arrayWithObjects:feedsList, nil];

        self.window.rootViewController = rootNC;

        return YES;
    }
Run Code Online (Sandbox Code Playgroud)

运用

    self.window.backgroundColor = [UIColor whiteColor];
Run Code Online (Sandbox Code Playgroud)

我能够改变所有视图的背景颜色.但是,我决定添加一个视图(UICollectionView)并将其设置为主视图.所以我将AppDelegate更改为:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];

        CollectionViewLayoutCVL *collectionViewLayout = [[CollectionViewLayoutCVL alloc] init];
        self.viewController = [[MainViewControllerCVC alloc] initWithCollectionViewLayout:collectionViewLayout];

        rootNC = …
Run Code Online (Sandbox Code Playgroud)

ios uibackgroundcolor uicollectionview uicollectionviewlayout

21
推荐指数
1
解决办法
2万
查看次数

iOS 11 - 无法更改导航栏高度

我正在开发一个应用程序,我刚刚升级到Xcode 9/Swift 4,并且还将我的iPhone升级到了iOS 11.当我安装iOS 11时安装了应用程序,所有看起来都没问题,直到我从Xcode运行它.现在我陷入了默认的NavBar高度.

我用来更改高度的代码不再有效:

class CustomNavControllerVC: UINavigationController
{
    let navBarHeight : CGFloat = 64.0
    let navbarBackButtonColor = UIColor(red: 247/255, green: 179/255, blue: 20/255, alpha: 1)

    override func viewDidLoad()
    {
        super.viewDidLoad()

        print("CustomNavControllerVC > viewDidLoad")
    }

    override func viewDidLayoutSubviews()
    {
        print("CustomNavControllerVC > viewDidLayoutSubviews")

        super.viewDidLayoutSubviews()

        navigationBar.frame.size.height = navBarHeight
        navigationBar.tintColor = navbarBackButtonColor
    }

    override func didReceiveMemoryWarning()
    {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}


// In my VCs

override func viewDidLoad()
{
    customizeNavBar()
}


func customizeNavBar()
{ …
Run Code Online (Sandbox Code Playgroud)

height uinavigationbar ios swift ios11

9
推荐指数
1
解决办法
9198
查看次数

如果从viewDidLoad调用,则performSegueWithIdentifier不起作用

我有一个带加载屏幕的简单应用程序.在这里,我检查NSUserDefaults中的一些用户详细信息,并跳转到登录或注册屏幕.

加载屏幕的viewDidLoad()如下所示:

override func viewDidLoad()
{
    super.viewDidLoad()

    loadingVM = LoadingVM() as LoadingVM

    print("LoadingVC")
    checkStoredUser()
}
Run Code Online (Sandbox Code Playgroud)

这是checkStoredUser()

func checkStoredUser()
{
    storedUserStatus = loadingVM.returnStoredUserStatus()

    if(storedUserStatus == true)
    {
        performSegueWithIdentifier("loadingToLoginVC", sender: self)
    }
    else
    {
        performSegueWithIdentifier("loadingToSignUpVC", sender: self)
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我根据loadingVM.returnStoredUserStatus()返回的内容决定从何处开始.我确信这会返回它应该返回的内容,但没有任何反应.

这是prepareForSegue()

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    print("prepareForSegue")

    if(segue.identifier == "loadingToSignUpVC")
    {
        let signUpViewCotroller = (segue.destinationViewController as! LocalSignUpVC)
    }
    else if(segue.identifier == "loadingToLoginVC")
    {
        print("loadingToLoginVC")

        let loginViewCotroller = (segue.destinationViewController as! LoginVC)
    }
}
Run Code Online (Sandbox Code Playgroud)

我做了一些挖掘工作,发现了一个似乎有效的奇怪建议但不提这样做的权利并不是很实际:

func checkStoredUser()
{
    storedUserStatus = loadingVM.returnStoredUserStatus()

    let …
Run Code Online (Sandbox Code Playgroud)

segue swift

7
推荐指数
1
解决办法
4533
查看次数

更改 UISearchBar 放大图标颜色和位置

我有一个 UISearchBar,我想更改初始放大图标的位置(出现在 UISearchBar 中间的那个)以及颜色或图标。

到目前为止,我更改了色调和图标图像。

但是,只有当我在模拟器上测试应用程序时才会显示新图标,但在实际设备(均运行 iOS 9.3)上它仍然显示默认图标。

UISearchBar.appearance().setImage(UIImage(named: "SearchbarIcon"), forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal)
Run Code Online (Sandbox Code Playgroud)

至于放大图标的位置,我希望它在左侧,如果我激活 UISearchBar,它就会显示在那里。

在此处输入图片说明

在此处输入图片说明

我在这里找到了很多答案,许多提供的解决方案不适用于 iOS 8.0+ 或在 Objective-C 中,我在理解它们时遇到了一些问题。

我试图添加一个包含图标的自定义背景,但它显示在搜索栏的底部,而图标仍然存在:

在此处输入图片说明

如果我将 Y 的背景偏移更改为 -44(UISearchBar 的高度),背景显示正常,但我无法再输入,因为似乎整个文本字段都被向上推了。我还尝试将 SearchText 的垂直偏移更改为 44 以进行补偿,但没有运气。老实说,我不确定搜索文本和背景偏移量应该做什么,但我决定尝试一下。

在此处输入图片说明

有什么办法可以做到这一点吗?或者也许是一种不同的方法?

icons uisearchbar magnify ios swift

5
推荐指数
1
解决办法
9972
查看次数

Swift - 按单元分页 UICollectionView 同时保持单元格水平居中

首先,不确定标题是否正确或提供了最好的描述,但我不确定还可以使用什么。

所以,我正在开发一个应用程序,但我在实现 UI 时遇到了卡住的部分。基本上,我有一个 VC(下图),它可以根据我从 JSON 文件中获得的信息进行自我定位。

在此处输入图片说明

问题是我需要在上侧有一个类似轮播的菜单,其中包含未定义数量的单元格(同样,取决于我从 JSON 文件中获得的内容)。我决定为此使用 UICollectionView 并且我设法毫无问题地实现了基础知识。

但这是我卡住的部分:

  1. 由于选定的单元格必须始终居中,当第一个和最后一个单元格被选中时,我需要在单元格和安全区域之间留出一个空白区域(见上图)。
  2. 滚动需要分页。通常,如果 UICollectionView 单元格的宽度几乎等于屏幕之一,则这不会成为问题,但要求是能够一次滚动一个元素(参见上面的第二个屏幕)。

我试图找到类似的东西,但也许我没有在寻找正确的东西,因为我能找到的只是按单元格而不是屏幕分页 UICollectionView

另外,老实说,我从未见过具有这种行为的应用程序/ UICollectionView。

我在下面发布了部分代码,但它并没有多大帮助,因为它只是标准的 UICollectionView 方法。

有什么建议?

class PreSignupDataVC : UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource

@IBOutlet weak var cvQuestions: UICollectionView!

var questionCell : PreSignupDataQuestionCellVC!
var screenData : Array<PreSignupScreenData> = Array<PreSignupScreenData>()
var pvDataSource : [String] = []
var numberOfComponents : Int = 0
var numberOfRowsInComponent : Int = 0
var currentScreen : Int = 1
var selectedType : Int?
var selectedCell : …
Run Code Online (Sandbox Code Playgroud)

uipickerview scroll-paging uicollectionview uicollectionviewcell swift

1
推荐指数
1
解决办法
3533
查看次数