ios-iPhone,不知道为啥视图变成黑色的

问题描述

iPhone,不知道为啥视图变成黑色的

视图变成了一个黑色的矩形,下面是画视图的代码:

- (void)drawRect:(CGRect)rect
{
    //// General Declarations
    CGContextRef context = UIGraphicsGetCurrentContext();

    //// Color Declarations
    UIColor* color3 = [UIColor colorWithRed: 0.102 green: 0.737 blue: 0.612 alpha: 1];
    UIColor* buttonStrokeColor = [UIColor colorWithRed: 0.925 green: 0.941 blue: 0.945 alpha: 0.004];

    //// Image Declarations
    UIImage* image = [UIImage imageNamed: @"image"];
    UIColor* imagePattern = [UIColor colorWithPatternImage: image];

    //// Group 2
    {
        //// AddButton Drawing
        UIBezierPath* addButtonPath = [UIBezierPath bezierPathWithRect: CGRectMake(280.0, 3.0, 30, 30)];
        [color3 setFill];
        [addButtonPath fill];
        [buttonStrokeColor setStroke];
        addButtonPath.lineWidth = 1;
        [addButtonPath stroke];

        //// Group
        {
            //// Rectangle Drawing
            UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRect: CGRectMake(280.0, 3.0, 30.0, 30.0)];
            CGContextSaveGState(context);
            CGContextSetPatternPhase(context, CGSizeMake(86, 33));
            [imagePattern setFill];
            [rectanglePath fill];
            CGContextRestoreGState(context);
            [buttonStrokeColor setStroke];
            rectanglePath.lineWidth = 1;
            [rectanglePath stroke];
        }
    }

不知道为什么变成黑盒子了?

解决方案

可能是你绘制时超出了视图本身的边框。绘制时不能根据视图的框架画,要根据视图的边界画。

更新贝塞尔曲线的起始应该是0.0。

并且在运行时要根据视图的尺寸进行编码。

解决方案二:

在使用UIBezierPath 画图之前,先设置绘制图形的颜色。

[[UIColor blueColor] set];
UIBezierPath *path=........

再者,你在绘图的上下文Context中多次设置了颜色,最先设置的颜色会影响到绘制的图形的颜色。所以建议在必要的地方使用
CGContextSaveGState(context) 与 CGContextRestoreGState(context) 配合使用。

时间: 2025-01-19 08:39:20

ios-iPhone,不知道为啥视图变成黑色的的相关文章

JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决_javascript技巧

var date = new Date('2016-11-11 11:11:11'); document.write(date); 最近在写一个时间判断脚本,需要将固定好的字符串时间转换为时间戳进行比较,在做的时候个人习惯使用chrome作为调试工具,代码基本完成之后,一切正常: 使用其他浏览器访问,好嘛,IE跟safari都不兼容,返回错误"Invalid Date". 想着估计是字符串格式的问题,改成'2016/11/11 11:11:11'再测试,结果正常,以为这样应该没问题了,

ios开发在表视图显示cell里的内容时出现failed to obtain a cell from its datasource

问题描述 ios开发在表视图显示cell里的内容时出现failed to obtain a cell from its datasource 这是代码 -(NSInteger)tableView:(UITableView )tableView numberOfRowsInSection:(NSInteger)section{ return 1; } -(UITableViewCell)tableView:(UITableView )tableView cellForRowAtIndexPath:

请问一下如何在iPhone里切换视图模式

问题描述 请问一下如何在iPhone里切换视图模式 请问一下如何在iPhone里切换视图模式 请问一下如何在iPhone里切换视图模式 解决方案 http://blog.csdn.net/linzhiji/article/details/6743186

iOS中有遍历父视图的子视图的方法便于统一设置同类控件的属性,Android中有类似的方法吗?

问题描述 iOS中有遍历父视图的子视图的方法便于统一设置同类控件的属性,Android中有类似的方法吗? iOS不论是controller还是View视图都有获取子视图来遍历的方法,Android中对应的办法是什么, 如果Android中遇到了父视图中批量同类型子控件的同一属性的统一设置,该怎么办? 解决方案 Android中ViewGroup及其子类是装载View的容器,具有API:int getChildCount(), View getChildAt(int index),使用这两个方法可

sql server-从sqlsever里面拷贝个表到hive,结果报这个错,不知道为啥

问题描述 从sqlsever里面拷贝个表到hive,结果报这个错,不知道为啥 ERROR manager.CatalogQueryManager: Failed to list columns from query: SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = (SELECT SCHEMA_NAME()) AND TABLE_NAME = N'cell_info' ORDER BY ORDINAL

iOS开发之表视图详解_IOS

本文详细介绍了表视图的用法.具体如下: 概述 表视图组成 表视图是iOS开发中最重要的视图,它以列表的形式展示数据.表视图又一下部分组成: 表头视图:表视图最上边的视图 表脚视图:表视图最下边的视图 单元格(cell):表视图中每一行的视图 节(section):由多个单元格组成,应用于分组列表 节头 节脚 表视图的相关类 UITableView继承自UIScrollView,且有两个协议:UITableViewDelegate和UITableViewDataSource.此外UITableVi

苹果iPhone 6订单暴增 黑色版亮相

腾讯数码讯(水蓝)iPhone 6不仅距离我们是越来越近,而且在供货方面应该不会有多少问题.根据台湾媒体<商业周刊>的报道称,iPhone 6将于 七月正式量产,而该机的订单数量也将超越任何一代iPhone,甚至是iPhone 5的整整两倍.由此可见,苹果不仅对iPhone 6的销售前景十分乐观,而且在未来发售的时候预计不会出现供货不足的状况.订单数量翻倍根据台湾媒体<商业周刊>的报道称,苹果iPhone 6的生产线将于七月启动,而在6月份第二周,鸿海董事长郭台铭以及和硕董事长童子

ios之UIScrollerView滚动视图

UIScrollView 类负责所有基于 UIKit 的滚动操作. 一.创建 [java] view plaincopy CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ;   UIScrollView* scrollView = [ [UIScrollView alloc ] initWithFrame:bounds ];   当你创建完滚动视图后,你可以将另一个视图的内容粘合到滚动视图的空白页上.这回创建一个滚动的内容

iOS应用开发中视图控件UIWindow的基本使用教程_IOS

一.简单介绍 iPhone应用程序通常只有一个窗口,表示为一个UIWindow类的实例.应用程序在启动时(或者从nib文件进行装载)创建这个窗口,并往窗口中加入一或多个视图并显示出来.之后我们很少需要再次引用它.UIWindow对象是所有UIView的根,管理和协调的应用程序的显示.一般应用程序只有一个UIWindow对象,即使有多个UIWindow对象,也只有一个UIWindow可以接受到用户的触屏事件. 在IOS中,UIWindow对象并没有像windows应用程序中常见的关闭框或标题栏这样